Commit 82df05e8 authored by tianyiming's avatar tianyiming

气瓶基本信息和气瓶充装信息同步至es并添加查询逻辑

parent d4b3d7c4
package com.yeejoin.amos.boot.module.tzs.api.entity;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
@Data
@Accessors(chain = true)
@Document(indexName = "cylinder_filling", type = "tzs_cylinder_filling", shards = 1, replicas = 0)
public class ESCylinderFillingRecordDto {
@Id
private Long sequenceNbr;
//充装单位
@Field(type = FieldType.Text)
private String fillingUnitName;
//出厂编号
@Field(type = FieldType.Text)
private String factoryNum;
//气瓶品种code
@Field(type = FieldType.Integer)
private Integer cylinderVariety;
//气瓶品种名称
@Field(type = FieldType.Text)
private String cylinderVarietyName;
//二维码编号
@Field(type = FieldType.Text)
private String qrCode;
//电子标签编号
@Field(type = FieldType.Text)
private String electronicLabelCode;
//气瓶唯一标识
@Field(type = FieldType.Text)
private String sequenceCode;
//单位内部编号
@Field(type = FieldType.Text)
private String unitInnerCode;
//产权单位名称
@Field(type = FieldType.Text)
private String unitName;
//气瓶状态code
@Field(type = FieldType.Integer)
private Integer cylinderStatus;
//气瓶状态名称
@Field(type = FieldType.Text)
private String cylinderStatusStr;
//充装开始时间
@Field(type = FieldType.Text)
private String fillingStartTime;
//充装结束时间
@Field(type = FieldType.Text)
private String fillingEndTime;
//充装人员姓名
@Field(type = FieldType.Text)
private String fillingUser;
//充装量(Kg)
@Field(type = FieldType.Double)
private Double fillingQuantity;
//室温
@Field(type = FieldType.Double)
private Double temperature;
//异常情况
@Field(type = FieldType.Integer)
private Integer abnormal;
//充装前检查人员姓名
@Field(type = FieldType.Text)
private String inspectorUserBefore;
//充装前检查时间
@Field(type = FieldType.Text)
private String inspectionDateBefore;
//充装前检查结果
@Field(type = FieldType.Text)
private String checkResultsBefore;
//重装后检查人员姓名
@Field(type = FieldType.Text)
private String inspectorAfter;
//重装后检查时间
@Field(type = FieldType.Text)
private String inspectionDateAfter;
//重装后检查结果
@Field(type = FieldType.Text)
private String checkResultsAfter;
//appid
@Field(type = FieldType.Text)
private String appId;
//统一社会信用代码
@Field(type = FieldType.Text)
private String creditCode;
}
package com.yeejoin.amos.boot.module.tzs.api.entity;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
@Data
@Accessors(chain = true)
@Document(indexName = "cylinder_info", type = "tzs_cylinder_info", shards = 1, replicas = 0)
public class ESCylinderInfoDto {
@Id
private Long sequenceNbr;
//产权单位名称
@Field(type = FieldType.Text)
private String unitName;
//出厂编号
@Field(type = FieldType.Text)
private String factoryNum;
//气瓶品种code
@Field(type = FieldType.Integer)
private Integer cylinderVariety;
//气瓶品种名称
@Field(type = FieldType.Text)
private String cylinderVarietyName;
//二维码标签
@Field(type = FieldType.Text)
private String qrCode;
//电子标签编号
@Field(type = FieldType.Text)
private String electronicLabelCode;
//气瓶状态code
@Field(type = FieldType.Integer)
private Integer cylinderStatus;
//气瓶状态名称
@Field(type = FieldType.Text)
private String cylinderStatusStr;
//充装介质
@Field(type = FieldType.Text)
private String fillingMediaName;
//公称压力
@Field(type = FieldType.Double)
private Double nominalWorkPressure;
//容积
@Field(type = FieldType.Double)
private Double volume;
//制造日期
@Field(type = FieldType.Text)
private String manufacturingDate;
//制造单位
@Field(type = FieldType.Text)
private String manufacturingUnit;
//检验日期
@Field(type = FieldType.Text)
private String inspectionDate;
//气瓶唯一标识
@Field(type = FieldType.Text)
private String sequenceCode;
//单位内部编号
@Field(type = FieldType.Text)
private String unitInnerCode;
//appid
@Field(type = FieldType.Text)
private String appId;
//统一社会信用代码
@Field(type = FieldType.Text)
private String creditCode;
@Field(type = FieldType.Text)
private String regionCode;
}
package com.yeejoin.amos.boot.module.tzs.flc.api.dto; package com.yeejoin.amos.boot.module.tzs.flc.api.dto;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto; import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import com.yeejoin.amos.boot.module.common.api.dto.AttachmentDto;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
...@@ -9,7 +8,6 @@ import lombok.EqualsAndHashCode; ...@@ -9,7 +8,6 @@ import lombok.EqualsAndHashCode;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 气瓶基本信息 * 气瓶基本信息
...@@ -156,4 +154,7 @@ public class CylinderInfoDto extends BaseDto { ...@@ -156,4 +154,7 @@ public class CylinderInfoDto extends BaseDto {
private String cylinderStatusStr; private String cylinderStatusStr;
private String SupervisionCode; private String SupervisionCode;
private String inspectionDateEnd;
private String inspectionDateStart;
} }
package com.yeejoin.amos.boot.module.tzs.flc.api.dto; package com.yeejoin.amos.boot.module.tzs.flc.api.dto;
import java.util.Date;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
/** /**
......
package com.yeejoin.amos.boot.module.tzs.flc.api.entity; package com.yeejoin.amos.boot.module.tzs.flc.api.entity;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity; import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import java.util.Date;
/** /**
* 液化气体气瓶充装信息-充装记录 * 液化气体气瓶充装信息-充装记录
* *
...@@ -82,4 +79,7 @@ public class CylinderFillingRecord extends BaseEntity { ...@@ -82,4 +79,7 @@ public class CylinderFillingRecord extends BaseEntity {
@ApiModelProperty(value = "充装信息审核ID") @ApiModelProperty(value = "充装信息审核ID")
private String fillingExamineId; private String fillingExamineId;
@ApiModelProperty(value = "是否保存到es(1标识已经保存过)")
private String isNotEs;
} }
package com.yeejoin.amos.boot.module.tzs.flc.api.entity; package com.yeejoin.amos.boot.module.tzs.flc.api.entity;
import java.util.Date; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity; import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import java.util.Date;
/** /**
* 气瓶基本信息 * 气瓶基本信息
* *
...@@ -123,4 +120,7 @@ public class CylinderInfo extends BaseEntity { ...@@ -123,4 +120,7 @@ public class CylinderInfo extends BaseEntity {
@ApiModelProperty(value = "监管码") @ApiModelProperty(value = "监管码")
private String SupervisionCode; private String SupervisionCode;
@ApiModelProperty(value = "是否保存到es(1标识已经保存过)")
private String isNotEs;
} }
...@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.tzs.flc.api.mapper; ...@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.tzs.flc.api.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.tzs.api.entity.ESCylinderFillingRecordDto;
import com.yeejoin.amos.boot.module.tzs.flc.api.dto.CylinderFillingRecordDto; import com.yeejoin.amos.boot.module.tzs.flc.api.dto.CylinderFillingRecordDto;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.boot.module.tzs.flc.api.entity.CylinderFillingRecord; import com.yeejoin.amos.boot.module.tzs.flc.api.entity.CylinderFillingRecord;
...@@ -45,9 +46,14 @@ public interface CylinderFillingRecordMapper extends BaseMapper<CylinderFillingR ...@@ -45,9 +46,14 @@ public interface CylinderFillingRecordMapper extends BaseMapper<CylinderFillingR
@Param("appId") String appId @Param("appId") String appId
); );
Page<ESCylinderFillingRecordDto> getCyinderFillingRecord(Page<ESCylinderFillingRecordDto> cylinderFillingRecordDto);
Double getFillingSumByMonth(@Param("appId") String appId,@Param("time") Date time); Double getFillingSumByMonth(@Param("appId") String appId,@Param("time") Date time);
Integer getFillingCountByMonth(@Param("appId") String appId,@Param("time") Date time); Integer getFillingCountByMonth(@Param("appId") String appId,@Param("time") Date time);
Double getFillingSumByDate(@Param("appId") String appId,@Param("time") Date time); Double getFillingSumByDate(@Param("appId") String appId,@Param("time") Date time);
ESCylinderFillingRecordDto getCyinderFillingRecordInfo(String sequenceCode);
} }
package com.yeejoin.amos.boot.module.tzs.flc.api.mapper; package com.yeejoin.amos.boot.module.tzs.flc.api.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.tzs.flc.api.dto.CylinderInfoDto; import com.yeejoin.amos.boot.module.tzs.flc.api.dto.CylinderInfoDto;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.boot.module.tzs.flc.api.entity.CylinderInfo; import com.yeejoin.amos.boot.module.tzs.flc.api.entity.CylinderInfo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -82,5 +81,7 @@ public interface CylinderInfoMapper extends BaseMapper<CylinderInfo> { ...@@ -82,5 +81,7 @@ public interface CylinderInfoMapper extends BaseMapper<CylinderInfo> {
Page<CylinderInfoDto> cyinderInfoList(Page<CylinderInfoDto> page, CylinderInfoDto cylinderInfoDto, String sort, List<String> appids); Page<CylinderInfoDto> cyinderInfoList(Page<CylinderInfoDto> page, CylinderInfoDto cylinderInfoDto, String sort, List<String> appids);
Page<CylinderInfoDto> getCyinderInfoList(Page<CylinderInfoDto> page);
Page<CylinderInfoDto> cyinderOutInfoList(Page<CylinderInfoDto> page, CylinderInfoDto cylinderInfoDto, String sort, List<String> appids); Page<CylinderInfoDto> cyinderOutInfoList(Page<CylinderInfoDto> page, CylinderInfoDto cylinderInfoDto, String sort, List<String> appids);
} }
package com.yeejoin.amos.boot.module.tzs.flc.api.service; package com.yeejoin.amos.boot.module.tzs.flc.api.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.tzs.api.entity.ESCylinderFillingRecordDto;
/** /**
* 液化气体气瓶充装信息-充装记录接口类 * 液化气体气瓶充装信息-充装记录接口类
* *
...@@ -9,4 +12,9 @@ package com.yeejoin.amos.boot.module.tzs.flc.api.service; ...@@ -9,4 +12,9 @@ package com.yeejoin.amos.boot.module.tzs.flc.api.service;
*/ */
public interface ICylinderFillingRecordService { public interface ICylinderFillingRecordService {
ESCylinderFillingRecordDto saveCylinderFillingRecordToES(ESCylinderFillingRecordDto ci);
Page<ESCylinderFillingRecordDto> getCyinderFillingRecord(Page<ESCylinderFillingRecordDto> cylinderFillingRecordDto);
Page<ESCylinderFillingRecordDto> queryByKeys(ESCylinderFillingRecordDto esCylinderFillingRecordDto, int pageNum, int pageSize);
} }
package com.yeejoin.amos.boot.module.tzs.flc.api.service; package com.yeejoin.amos.boot.module.tzs.flc.api.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.tzs.api.entity.ESCylinderInfoDto;
import com.yeejoin.amos.boot.module.tzs.flc.api.dto.CylinderInfoDto;
import java.util.Map; import java.util.Map;
/** /**
...@@ -39,4 +43,10 @@ public interface ICylinderInfoService { ...@@ -39,4 +43,10 @@ public interface ICylinderInfoService {
void synUnitFillingCheckData(); void synUnitFillingCheckData();
void synFillingUnloadUnitData(); void synFillingUnloadUnitData();
Page<CylinderInfoDto> getCyinderInfoList(Page<CylinderInfoDto> page);
ESCylinderInfoDto saveCylinderInfoToES(CylinderInfoDto ci);
Page<ESCylinderInfoDto> queryByKeys(CylinderInfoDto cylinderInfoDto, int pageNum, int pageSize);
} }
...@@ -146,4 +146,60 @@ ...@@ -146,4 +146,60 @@
select count(1) from tz_cylinder_filling_record r where date_format(r.filling_endTime,'%Y-%m') = date_format(#{time},'%Y-%m') and app_id = #{appId} select count(1) from tz_cylinder_filling_record r where date_format(r.filling_endTime,'%Y-%m') = date_format(#{time},'%Y-%m') and app_id = #{appId}
</select> </select>
<select id="getCyinderFillingRecord" resultType="com.yeejoin.amos.boot.module.tzs.api.entity.ESCylinderFillingRecordDto">
SELECT
r.sequence_nbr AS sequenceNbr,
r.filling_startTime AS fillingStarttime,
r.filling_endTime AS fillingEndtime,
r.filling_user AS fillingUser,
r.filling_quantity AS fillingQuantity,
r.temperature AS temperature,
CASE
r.abnormal
WHEN 0 THEN
'有异常'
WHEN 1 THEN
'正常' ELSE''
END AS abnormalStr,
b.inspector_user AS inspectorUserBefore,
b.inspection_date AS inspectionDateBefore,
b.check_results AS checkResultsBefore,
b.sequence_code AS sequenceCode,
b.filling_unit_name AS fillingUnitName,
af.inspector AS inspectorAfter,
af.inspection_date AS inspectionDateAfter,
af.check_results AS checkResultsAfter
FROM
tz_cylinder_filling_record r
LEFT JOIN tz_cylinder_filling b ON b.filling_before_id = r.filling_before_id
AND date_format ( b.inspection_date, '%Y-%m-%d' ) = date_format ( r.filling_startTime, '%Y-%m-%d' )
LEFT JOIN tz_cylinder_filling_check af ON af.filling_check_id = r.filling_check_id
AND date_format ( af.inspection_date, '%Y-%m-%d' ) = date_format ( r.filling_startTime, '%Y-%m-%d' )
LEFT JOIN tz_cylinder_info i ON b.sequence_code = i.sequence_code
WHERE
r.is_not_es IS NULL
</select>
<select id="getCyinderFillingRecordInfo"
resultType="com.yeejoin.amos.boot.module.tzs.api.entity.ESCylinderFillingRecordDto">
SELECT
ci.unit_name AS unit_name,
ci.factory_num AS factoryNum,
ci.cylinder_variety AS cylinder_variety,
d2.NAME AS cylinder_variety_name,
ci.unit_inner_code AS unit_inner_code,
ci.sequence_code AS sequence_code,
ct.qrCode,
ct.electronic_label_code,
ci.app_id,
ci.credit_code
FROM
tz_cylinder_info AS ci
LEFT JOIN cb_data_dictionary AS d1 ON d1.TYPE = 'CZJZMC' AND d1.code = ci.filling_media
LEFT JOIN cb_data_dictionary AS d2 ON d2.sequence_nbr = ci.cylinder_variety
LEFT JOIN tz_cylinder_tags AS ct ON ct.sequence_code = ci.sequence_code
LEFT JOIN tz_cylinder_unit AS tn ON ci.app_id = tn.app_id
where
ci.sequence_code = #{sequenceCode}
</select>
</mapper> </mapper>
...@@ -243,4 +243,50 @@ ...@@ -243,4 +243,50 @@
</foreach> </foreach>
</if> </if>
</select> </select>
<select id="getCyinderInfoList" resultType="com.yeejoin.amos.boot.module.tzs.flc.api.dto.CylinderInfoDto">
SELECT
ci.sequence_nbr AS sequence_nbr,
ci.unit_name AS unit_name,
ci.factory_num AS factory_num,
ci.cylinder_status AS cylinder_status,
ci.cylinder_variety AS cylinder_variety,
ci.volume AS volume,
ci.manufacturing_date AS manufacturing_date,
ci.manufacturing_unit AS manufacturing_unit,
ci.unit_inner_code AS unit_inner_code,
ci.sequence_code AS sequence_code,
ci.early_warning_level AS early_warning_level,
ci.early_warning_level_cal_date AS early_warning_level_cal_date,
ci.end_custom_code AS end_custom_code,
ci.rec_date AS rec_date,
ci.rec_user_id AS rec_user_id,
ci.sync_date AS sync_date,
ci.sync_state AS sync_state,
ci.app_id AS app_id,
ci.integrity AS integrity,
ci.longitude AS longitude,
ci.latitude AS latitude,
ci.credit_code AS credit_code,
ci.filling_media AS filling_media,
ci.product_name AS product_name,
ci.product_qualified AS product_qualified,
ci.proof_quality AS proof_quality,
ci.supervision_inspec AS supervision_inspec,
ci.type_experiments AS type_experiments,
ci.valve_manufactur_unit AS valve_manufactur_unit,
ci.nominal_work_pressure AS nominal_work_pressure,
d1.name AS filling_media_name,
d2.name AS cylinder_variety_name,
d3.name AS cylinder_status_str,
ct.qrCode,
ct.electronic_label_code
FROM
tz_cylinder_info AS ci
LEFT JOIN cb_data_dictionary AS d1 ON d1.type = 'CZJZMC' AND d1.code = ci.filling_media
LEFT JOIN cb_data_dictionary AS d2 ON d2.sequence_nbr = ci.cylinder_variety
LEFT JOIN cb_data_dictionary AS d3 ON d3.sequence_nbr = ci.cylinder_status
LEFT JOIN tz_cylinder_tags AS ct ON ct.sequence_code = ci.sequence_code
where ci.is_not_es IS NULL
</select>
</mapper> </mapper>
package com.yeejoin.amos.boot.module.tzs.biz.dao;
import com.yeejoin.amos.boot.module.tzs.api.entity.ESCylinderFillingRecordDto;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface ESCylinderFillingRecordRepository extends PagingAndSortingRepository<ESCylinderFillingRecordDto, Long> {
}
package com.yeejoin.amos.boot.module.tzs.biz.dao;
import com.yeejoin.amos.boot.module.tzs.api.entity.ESCylinderInfoDto;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface ESCylinderInfoRepository extends PagingAndSortingRepository<ESCylinderInfoDto, Long> {
}
package com.yeejoin.amos.boot.module.tzs.flc.biz.controller; package com.yeejoin.amos.boot.module.tzs.flc.biz.controller;
import java.text.SimpleDateFormat; import com.alibaba.fastjson.JSON;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.module.tzs.api.dto.TzBaseEnterpriseInfoDto;
import com.yeejoin.amos.boot.module.tzs.api.entity.BaseUnitLicence;
import com.yeejoin.amos.boot.module.tzs.api.entity.TzBaseEnterpriseInfo;
import com.yeejoin.amos.boot.module.tzs.biz.action.WarningMsgAction;
import com.yeejoin.amos.boot.module.tzs.biz.service.impl.BaseUnitLicenceServiceImpl;
import com.yeejoin.amos.boot.module.tzs.biz.service.impl.TzBaseEnterpriseInfoServiceImpl;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.controller.BaseController; import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.biz.common.entity.DataDictionary;
import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl; import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey; import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.common.api.dto.AttachmentDto; import com.yeejoin.amos.boot.module.common.api.dto.AttachmentDto;
import com.yeejoin.amos.boot.module.common.biz.service.impl.SourceFileServiceImpl; import com.yeejoin.amos.boot.module.common.biz.service.impl.SourceFileServiceImpl;
import com.yeejoin.amos.boot.module.tzs.api.dto.TzBaseEnterpriseInfoDto;
import com.yeejoin.amos.boot.module.tzs.api.entity.BaseUnitLicence;
import com.yeejoin.amos.boot.module.tzs.api.entity.ESCylinderFillingRecordDto;
import com.yeejoin.amos.boot.module.tzs.api.entity.ESCylinderInfoDto;
import com.yeejoin.amos.boot.module.tzs.api.entity.MsgLog; import com.yeejoin.amos.boot.module.tzs.api.entity.MsgLog;
import com.yeejoin.amos.boot.module.tzs.biz.service.impl.BaseUnitLicenceServiceImpl;
import com.yeejoin.amos.boot.module.tzs.biz.service.impl.ESCylinderServiceImpl; import com.yeejoin.amos.boot.module.tzs.biz.service.impl.ESCylinderServiceImpl;
import com.yeejoin.amos.boot.module.tzs.biz.utils.BeanDtoVoUtils; import com.yeejoin.amos.boot.module.tzs.biz.service.impl.TzBaseEnterpriseInfoServiceImpl;
import com.yeejoin.amos.boot.module.tzs.flc.api.dto.CylinderFillingRecordDto; import com.yeejoin.amos.boot.module.tzs.flc.api.dto.CylinderFillingRecordDto;
import com.yeejoin.amos.boot.module.tzs.flc.api.dto.CylinderInfoDto; import com.yeejoin.amos.boot.module.tzs.flc.api.dto.CylinderInfoDto;
import com.yeejoin.amos.boot.module.tzs.flc.api.dto.CylinderUnitDto; import com.yeejoin.amos.boot.module.tzs.flc.api.dto.CylinderUnitDto;
import com.yeejoin.amos.boot.module.tzs.flc.api.entity.CylinderInfo; import com.yeejoin.amos.boot.module.tzs.flc.api.entity.CylinderInfo;
import com.yeejoin.amos.boot.module.tzs.flc.api.entity.CylinderTags;
import com.yeejoin.amos.boot.module.tzs.flc.api.entity.CylinderUnit; import com.yeejoin.amos.boot.module.tzs.flc.api.entity.CylinderUnit;
import com.yeejoin.amos.boot.module.tzs.flc.biz.service.impl.CylinderFillingRecordServiceImpl; import com.yeejoin.amos.boot.module.tzs.flc.biz.service.impl.*;
import com.yeejoin.amos.boot.module.tzs.flc.biz.service.impl.CylinderInfoServiceImpl; import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.boot.module.tzs.flc.biz.service.impl.CylinderInspectionServiceImpl; import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.boot.module.tzs.flc.biz.service.impl.CylinderTagsServiceImpl; import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.boot.module.tzs.flc.biz.service.impl.CylinderUnitServiceImpl; import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import com.yeejoin.amos.boot.module.tzs.flc.biz.service.impl.ScheduleService;
import com.yeejoin.amos.feign.systemctl.Systemctl; import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.RegionModel; import com.yeejoin.amos.feign.systemctl.model.RegionModel;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.*;
/** /**
* 气瓶基本信息 * 气瓶基本信息
...@@ -115,6 +95,9 @@ public class CylinderInfoController extends BaseController { ...@@ -115,6 +95,9 @@ public class CylinderInfoController extends BaseController {
@Autowired @Autowired
TzBaseEnterpriseInfoServiceImpl baseEnterpriseInfoService; TzBaseEnterpriseInfoServiceImpl baseEnterpriseInfoService;
@Autowired
private RedisUtils redisUtils;
/** /**
* 新增气瓶基本信息 * 新增气瓶基本信息
* *
...@@ -575,6 +558,149 @@ public class CylinderInfoController extends BaseController { ...@@ -575,6 +558,149 @@ public class CylinderInfoController extends BaseController {
// return ResponseHelper.buildResponse(result); // return ResponseHelper.buildResponse(result);
} }
/**
* 气瓶基本信息存入es
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/saveCyinderInfo")
@ApiOperation(httpMethod = "GET", value = "气瓶基本信息存入es", notes = "气瓶基本信息存入es")
public void saveCyinderInfo() {
Page<CylinderInfoDto> cylinderInfoPage = new Page<>();
Integer count = cylinderInfoServiceImpl.count();
Integer times = 0;
if (count != 0) {
times = count / 1000;
int last = count % 1000;
if (last > 0) {
times++;
}
}
for (int i = 0; i <= times; i++) {
cylinderInfoPage.setCurrent(i);
cylinderInfoPage.setSize(1000);
cylinderInfoPage = cylinderInfoServiceImpl.getCyinderInfoList(cylinderInfoPage);
for (CylinderInfoDto ci : cylinderInfoPage.getRecords()) {
cylinderInfoServiceImpl.saveCylinderInfoToES(ci);
}
}
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/getCyinderInfo")
@ApiOperation(httpMethod = "GET", value = "气瓶基本信息存入es入口", notes = "气瓶基本信息存入es入口")
public Page<CylinderInfoDto> getCyinderInfo() {
Page<CylinderInfoDto> cylinderInfoPage = new Page<>();
cylinderInfoPage.setCurrent(1);
cylinderInfoPage.setSize(1000);
cylinderInfoPage = cylinderInfoServiceImpl.getCyinderInfoList(cylinderInfoPage);
for (CylinderInfoDto ci : cylinderInfoPage.getRecords()) {
cylinderInfoServiceImpl.saveCylinderInfoToES(ci);
}
return cylinderInfoServiceImpl.getCyinderInfoList(cylinderInfoPage);
}
/**
* 气瓶基本信息
*
* @param pageNum 当前页
* @param pageSize 每页大小
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/getEsCyinderInfoList")
@ApiOperation(httpMethod = "GET", value = "获取登陆人所在气瓶基本信息", notes = "获取登陆人所在气瓶基本信息")
public ResponseModel<IPage<ESCylinderInfoDto>> getEsCyinderInfoList(@RequestParam(value = "pageNum") int pageNum,
@RequestParam(value = "pageSize") int pageSize,
CylinderInfoDto cylinderInfoDto) {
ReginParams reginParams = JSON.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
if (ObjectUtils.isEmpty(reginParams)) {
return null;
}
String companyCode = reginParams.getUserModel().getCompanys().get(0).getCompanyCode();
if (companyCode.length() > 6) {
cylinderInfoDto.setCreditCode(companyCode);
}
if (ValidationUtil.isEmpty(cylinderInfoDto.getRegionCode()) && ValidationUtil.isEmpty(cylinderInfoDto.getCreditCode()) && cylinderInfoDto.getIsWarn() == 0) {
return null;
}
Page<ESCylinderInfoDto> pageResult = cylinderInfoServiceImpl.queryByKeys(cylinderInfoDto, pageNum, pageSize);
return ResponseHelper.buildResponse(pageResult);
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/saveCyinderFillingRecord")
@ApiOperation(httpMethod = "GET", value = "气瓶充装信息存入es", notes = "气瓶充装信息存入es")
public void saveCyinderFillingRecord() {
Page<ESCylinderFillingRecordDto> recordDtoPage = new Page<>();
Integer count = cylinderFillingRecordServiceImpl.count();
Integer times = 0;
if (count != 0) {
times = count / 1000;
int last = count % 1000;
if (last > 0) {
times++;
}
}
for (int i = 0; i <= times; i++) {
recordDtoPage.setCurrent(i);
recordDtoPage.setSize(1000);
// CylinderFillingRecordDto cylinderFillingRecordDto = new CylinderFillingRecordDto();
// if (StringUtils.isEmpty(cylinderFillingRecordDto.getSequenceCode())) {
// cylinderFillingRecordDto.setAppId("9B150BB7D0C21A7A62BD6837E14A44BF");
// }
Page<ESCylinderFillingRecordDto> cyinderFillingRecord = cylinderFillingRecordServiceImpl.getCyinderFillingRecord(recordDtoPage);
for (ESCylinderFillingRecordDto ci : cyinderFillingRecord.getRecords()) {
cylinderFillingRecordServiceImpl.saveCylinderFillingRecordToES(ci);
}
}
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/getCyinderFillingRecord")
@ApiOperation(httpMethod = "GET", value = "气瓶充装信息存入es入口", notes = "气瓶充装信息存入es入口")
public Page<ESCylinderFillingRecordDto> getCyinderFillingRecord() {
Page<ESCylinderFillingRecordDto> cylinderInfoPage = new Page<>();
cylinderInfoPage.setCurrent(1);
cylinderInfoPage.setSize(10);
Page<ESCylinderFillingRecordDto> cyinderFillingRecord = cylinderFillingRecordServiceImpl.getCyinderFillingRecord(cylinderInfoPage);
for (ESCylinderFillingRecordDto ci : cyinderFillingRecord.getRecords()) {
cylinderFillingRecordServiceImpl.saveCylinderFillingRecordToES(ci);
}
return cyinderFillingRecord;
}
/**
* 气瓶基本信息
*
* @param pageNum 当前页
* @param pageSize 每页大小
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/getEsCyinderRecordList")
@ApiOperation(httpMethod = "GET", value = "获取登陆人所在气瓶充装信息", notes = "获取登陆人所在气瓶充装信息")
public ResponseModel<IPage<ESCylinderFillingRecordDto>> getEsCyinderRecordList(@RequestParam(value = "pageNum") int pageNum,
@RequestParam(value = "pageSize") int pageSize,
ESCylinderFillingRecordDto esCylinderFillingRecordDto) {
ReginParams reginParams = JSON.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
if (ObjectUtils.isEmpty(reginParams)) {
return null;
}
String companyCode = reginParams.getUserModel().getCompanys().get(0).getCompanyCode();
if (companyCode.length() > 6) {
esCylinderFillingRecordDto.setCreditCode(companyCode);
}
Page<ESCylinderFillingRecordDto> pageResult = cylinderFillingRecordServiceImpl.queryByKeys(esCylinderFillingRecordDto, pageNum, pageSize);
return ResponseHelper.buildResponse(pageResult);
}
private QueryWrapper<CylinderInfo> setQueryWrapper(QueryWrapper<CylinderInfo> queryWrapper, private QueryWrapper<CylinderInfo> setQueryWrapper(QueryWrapper<CylinderInfo> queryWrapper,
CylinderInfoDto cylinderInfo, String sort) { CylinderInfoDto cylinderInfo, String sort) {
if (cylinderInfo.getAppIds() != null && cylinderInfo.getAppIds().size() > 0) { if (cylinderInfo.getAppIds() != null && cylinderInfo.getAppIds().size() > 0) {
......
package com.yeejoin.amos.boot.module.tzs.flc.biz.service.impl; package com.yeejoin.amos.boot.module.tzs.flc.biz.service.impl;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.tzs.api.entity.ESCylinderFillingRecordDto;
import com.yeejoin.amos.boot.module.tzs.biz.dao.ESCylinderFillingRecordRepository;
import com.yeejoin.amos.boot.module.tzs.flc.api.dto.CylinderFillingRecordDto; import com.yeejoin.amos.boot.module.tzs.flc.api.dto.CylinderFillingRecordDto;
import com.yeejoin.amos.boot.module.tzs.flc.api.entity.CylinderFillingRecord; import com.yeejoin.amos.boot.module.tzs.flc.api.entity.CylinderFillingRecord;
import com.yeejoin.amos.boot.module.tzs.flc.api.mapper.CylinderFillingRecordMapper; import com.yeejoin.amos.boot.module.tzs.flc.api.mapper.CylinderFillingRecordMapper;
import com.yeejoin.amos.boot.module.tzs.flc.api.service.ICylinderFillingRecordService; import com.yeejoin.amos.boot.module.tzs.flc.api.service.ICylinderFillingRecordService;
import org.apache.http.HttpHost;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.core.rdbms.service.BaseService; import org.typroject.tyboot.core.rdbms.service.BaseService;
import java.io.IOException;
import java.util.Date; import java.util.Date;
import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* 液化气体气瓶充装信息-充装记录服务实现类 * 液化气体气瓶充装信息-充装记录服务实现类
...@@ -20,6 +40,13 @@ import java.util.List; ...@@ -20,6 +40,13 @@ import java.util.List;
*/ */
@Service @Service
public class CylinderFillingRecordServiceImpl extends BaseService<CylinderFillingRecordDto, CylinderFillingRecord, CylinderFillingRecordMapper> implements ICylinderFillingRecordService { public class CylinderFillingRecordServiceImpl extends BaseService<CylinderFillingRecordDto, CylinderFillingRecord, CylinderFillingRecordMapper> implements ICylinderFillingRecordService {
@Autowired
ESCylinderFillingRecordRepository esCylinderFillingRecordRepository;
@Autowired
CylinderFillingRecordMapper cylinderFillingRecordMapper;
/** /**
* 分页查询 * 分页查询
*/ */
...@@ -77,4 +104,223 @@ public class CylinderFillingRecordServiceImpl extends BaseService<CylinderFillin ...@@ -77,4 +104,223 @@ public class CylinderFillingRecordServiceImpl extends BaseService<CylinderFillin
public Double getFillingSumByDate(String appId, Date time) { public Double getFillingSumByDate(String appId, Date time) {
return baseMapper.getFillingSumByDate(appId, time); return baseMapper.getFillingSumByDate(appId, time);
} }
@Scheduled(cron = "${tzs.cylinder.fill.cron}")
public void setTimeSaveCylinderInfoToES(){
Page<ESCylinderFillingRecordDto> cylinderFillingRecordPage = new Page<>();
Page<ESCylinderFillingRecordDto> cyinderInfoList = cylinderFillingRecordMapper.getCyinderFillingRecord(cylinderFillingRecordPage);
Long count = cyinderInfoList.getCurrent();
Long times = 0L;
if (count != 0) {
times = count / 1000;
Long last = count % 1000;
if (last > 0) {
times++;
}
}
for (int i = 0; i <= times; i++) {
cylinderFillingRecordPage.setCurrent(i);
cylinderFillingRecordPage.setSize(1000);
cylinderFillingRecordPage = cylinderFillingRecordMapper.getCyinderFillingRecord(cylinderFillingRecordPage);
if(!ObjectUtils.isEmpty(cylinderFillingRecordPage)){
cylinderFillingRecordPage.getRecords().stream().map(item->{
if(!ObjectUtils.isEmpty(item.getSequenceCode())){
ESCylinderFillingRecordDto cyinderFillingRecordInfo = cylinderFillingRecordMapper.getCyinderFillingRecordInfo(item.getSequenceCode());
item.setUnitName(cyinderFillingRecordInfo.getUnitName());
item.setFactoryNum(cyinderFillingRecordInfo.getFactoryNum());
item.setCylinderVariety(cyinderFillingRecordInfo.getCylinderVariety());
item.setCylinderVarietyName(cyinderFillingRecordInfo.getCylinderVarietyName());
item.setUnitInnerCode(cyinderFillingRecordInfo.getUnitInnerCode());
item.setSequenceCode(cyinderFillingRecordInfo.getSequenceCode());
item.setQrCode(cyinderFillingRecordInfo.getQrCode());
item.setElectronicLabelCode(cyinderFillingRecordInfo.getElectronicLabelCode());
item.setAppId(cyinderFillingRecordInfo.getAppId());
item.setCreditCode(cyinderFillingRecordInfo.getCreditCode());
}
return item;
}).collect(Collectors.toList());
}
for (ESCylinderFillingRecordDto ci : cylinderFillingRecordPage.getRecords()) {
saveCylinderFillingRecordToES(ci);
}
}
}
@Override
public Page<ESCylinderFillingRecordDto> getCyinderFillingRecord(Page<ESCylinderFillingRecordDto> cylinderFillingRecordDto) {
Page<ESCylinderFillingRecordDto> cyinderFillingRecord = cylinderFillingRecordMapper.getCyinderFillingRecord(cylinderFillingRecordDto);
if(!ObjectUtils.isEmpty(cyinderFillingRecord)){
cyinderFillingRecord.getRecords().stream().map(item->{
if(!ObjectUtils.isEmpty(item.getSequenceCode())){
ESCylinderFillingRecordDto cyinderFillingRecordInfo = cylinderFillingRecordMapper.getCyinderFillingRecordInfo(item.getSequenceCode());
item.setUnitName(cyinderFillingRecordInfo.getUnitName());
item.setFactoryNum(cyinderFillingRecordInfo.getFactoryNum());
item.setCylinderVariety(cyinderFillingRecordInfo.getCylinderVariety());
item.setCylinderVarietyName(cyinderFillingRecordInfo.getCylinderVarietyName());
item.setUnitInnerCode(cyinderFillingRecordInfo.getUnitInnerCode());
item.setSequenceCode(cyinderFillingRecordInfo.getSequenceCode());
item.setQrCode(cyinderFillingRecordInfo.getQrCode());
item.setElectronicLabelCode(cyinderFillingRecordInfo.getElectronicLabelCode());
item.setAppId(cyinderFillingRecordInfo.getAppId());
item.setCreditCode(cyinderFillingRecordInfo.getCreditCode());
}
return item;
}).collect(Collectors.toList());
}
return cylinderFillingRecordMapper.getCyinderFillingRecord(cylinderFillingRecordDto);
}
@Override
public Page<ESCylinderFillingRecordDto> queryByKeys(ESCylinderFillingRecordDto esCylinderFillingRecordDto, int pageNum, int pageSize) {
Page<ESCylinderFillingRecordDto> result = new Page<ESCylinderFillingRecordDto>(pageNum, pageSize);
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("36.46.151.113", 9200, "http"))
);
SearchRequest request = new SearchRequest();
request.indices("cylinder_info");
//通用匹配规则,条件构建
boolean flag = true;
SearchSourceBuilder builder = new SearchSourceBuilder();
BoolQueryBuilder boolMust = QueryBuilders.boolQuery();
//匹配当前登录人
// if (!ObjectUtils.isEmpty(esCylinderFillingRecordDto.getCreditCode())) {
// flag = false;
// BoolQueryBuilder meBuilder = QueryBuilders.boolQuery();
// meBuilder.must(QueryBuilders.matchQuery("creditCode", esCylinderFillingRecordDto.getCreditCode()));
// boolMust.must(meBuilder);
// }
//匹配充装单位
if (!ObjectUtils.isEmpty(esCylinderFillingRecordDto.getFillingUnitName())) {
flag = false;
BoolQueryBuilder query = QueryBuilders.boolQuery();
query.must(QueryBuilders.matchQuery("fillingUnitName", "*" + esCylinderFillingRecordDto.getFillingUnitName() + "*"));
boolMust.must(query);
}
//匹配产权单位
if (!ObjectUtils.isEmpty(esCylinderFillingRecordDto.getUnitName())) {
flag = false;
BoolQueryBuilder query = QueryBuilders.boolQuery();
query.must(QueryBuilders.matchQuery("unitName", "*" + esCylinderFillingRecordDto.getUnitName() + "*"));
boolMust.must(query);
}
//匹配出厂编号
if (!ObjectUtils.isEmpty(esCylinderFillingRecordDto.getFactoryNum())) {
flag = false;
BoolQueryBuilder query = QueryBuilders.boolQuery();
query.must(QueryBuilders.matchQuery("factoryNum", "*" + esCylinderFillingRecordDto.getFactoryNum() + "*"));
boolMust.must(query);
}
//匹配气瓶品种
if (!ObjectUtils.isEmpty(esCylinderFillingRecordDto.getCylinderVariety())) {
flag = false;
BoolQueryBuilder query = QueryBuilders.boolQuery();
query.must(QueryBuilders.matchQuery("cylinderVariety", esCylinderFillingRecordDto.getCylinderVariety()));
boolMust.must(query);
}
//匹配二维码编码
if (!ObjectUtils.isEmpty(esCylinderFillingRecordDto.getQrCode())) {
flag = false;
BoolQueryBuilder query = QueryBuilders.boolQuery();
query.must(QueryBuilders.matchQuery("qrCode", "*" + esCylinderFillingRecordDto.getQrCode() + "*"));
boolMust.must(query);
}
//匹配电子标签
if (!ObjectUtils.isEmpty(esCylinderFillingRecordDto.getElectronicLabelCode())) {
flag = false;
BoolQueryBuilder query = QueryBuilders.boolQuery();
query.must(QueryBuilders.matchQuery("electronicLabelCode", "*" + esCylinderFillingRecordDto.getElectronicLabelCode() + "*"));
boolMust.must(query);
}
//匹配气瓶唯一标识
if (!ObjectUtils.isEmpty(esCylinderFillingRecordDto.getSequenceCode())) {
flag = false;
BoolQueryBuilder sequenceCodeBuilder = QueryBuilders.boolQuery();
sequenceCodeBuilder.must(QueryBuilders.matchQuery("sequenceCode", esCylinderFillingRecordDto.getSequenceCode()));
boolMust.must(sequenceCodeBuilder);
}
//匹配单位内部编号
if (!ObjectUtils.isEmpty(esCylinderFillingRecordDto.getUnitInnerCode())) {
flag = false;
BoolQueryBuilder query = QueryBuilders.boolQuery();
query.must(QueryBuilders.matchQuery("unitInnerCode", "*" + esCylinderFillingRecordDto.getUnitInnerCode() + "*"));
boolMust.must(query);
}
//充装开始时间
if (!ObjectUtils.isEmpty(esCylinderFillingRecordDto.getFillingStartTime())) {
flag = false;
BoolQueryBuilder query = QueryBuilders.boolQuery();
query.must(QueryBuilders.matchQuery("fillingStartTime", esCylinderFillingRecordDto.getFillingStartTime()));
boolMust.must(query);
}
//充装结束时间
if (!ObjectUtils.isEmpty(esCylinderFillingRecordDto.getFillingEndTime())) {
flag = false;
BoolQueryBuilder query = QueryBuilders.boolQuery();
query.must(QueryBuilders.matchQuery("fillingEndTime", esCylinderFillingRecordDto.getFillingEndTime()));
boolMust.must(query);
}
if(flag) { // 搜索全部
boolMust.must(QueryBuilders.matchAllQuery());
}
builder.query(boolMust);
builder.from((pageNum - 1) * pageSize);
builder.size(pageSize);
request.source(builder);
List<ESCylinderFillingRecordDto> list = new LinkedList<>();
long totle = 0;
try {
SearchResponse response = esClient.search(request, RequestOptions.DEFAULT);
for (org.elasticsearch.search.SearchHit hit : response.getHits()) {
System.out.println(hit);
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(hit);
ESCylinderFillingRecordDto esCylinderFillingRecordDto1 = JSONObject.toJavaObject(jsonObject.getJSONObject("sourceAsMap"), ESCylinderFillingRecordDto.class);
list.add(esCylinderFillingRecordDto1);
}
totle = response.getInternalResponse().hits().getTotalHits().value;
result.setRecords(list);
result.setTotal(totle);
} catch (IOException e) {
throw new RuntimeException(e);
}
return result;
}
@Override
public ESCylinderFillingRecordDto saveCylinderFillingRecordToES(ESCylinderFillingRecordDto ci) {
ESCylinderFillingRecordDto esCylinderFillingRecordDto = new ESCylinderFillingRecordDto();
BeanUtils.copyProperties(ci, esCylinderFillingRecordDto);
ESCylinderFillingRecordDto recordDto = esCylinderFillingRecordRepository.save(esCylinderFillingRecordDto);
if (!ObjectUtils.isEmpty(recordDto)) {
//同步到es后修改
CylinderFillingRecord cylinderFillingRecord = new CylinderFillingRecord();
cylinderFillingRecord.setIsNotEs("1");
baseMapper.update(cylinderFillingRecord, new QueryWrapper<CylinderFillingRecord>().eq("sequence_nbr", ci.getSequenceNbr()));
}
return recordDto;
}
} }
\ No newline at end of file
package com.yeejoin.amos.boot.module.tzs.flc.biz.service.impl; package com.yeejoin.amos.boot.module.tzs.flc.biz.service.impl;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Comparator;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
import java.util.function.IntConsumer;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils; import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
import com.yeejoin.amos.boot.module.tzs.api.dto.WarningMsgDto; import com.yeejoin.amos.boot.module.tzs.api.dto.WarningMsgDto;
import com.yeejoin.amos.boot.module.tzs.api.entity.ESCylinderInfoDto;
import com.yeejoin.amos.boot.module.tzs.api.entity.MsgLog; import com.yeejoin.amos.boot.module.tzs.api.entity.MsgLog;
import com.yeejoin.amos.boot.module.tzs.api.enums.EarlyWarningLevelEnum; import com.yeejoin.amos.boot.module.tzs.api.enums.EarlyWarningLevelEnum;
import com.yeejoin.amos.boot.module.tzs.api.mapper.ScheduleMapper; import com.yeejoin.amos.boot.module.tzs.api.mapper.ScheduleMapper;
import com.yeejoin.amos.boot.module.tzs.biz.dao.ESCylinderInfoRepository;
import com.yeejoin.amos.boot.module.tzs.biz.service.impl.MsgLogServiceImpl; import com.yeejoin.amos.boot.module.tzs.biz.service.impl.MsgLogServiceImpl;
import com.yeejoin.amos.boot.module.tzs.biz.service.impl.StartPlatformTokenService; import com.yeejoin.amos.boot.module.tzs.biz.service.impl.StartPlatformTokenService;
import com.yeejoin.amos.boot.module.tzs.biz.service.impl.TzsAuthServiceImpl; import com.yeejoin.amos.boot.module.tzs.biz.service.impl.TzsAuthServiceImpl;
import com.yeejoin.amos.boot.module.tzs.flc.api.dto.CylinderAreaDataDto; import com.yeejoin.amos.boot.module.tzs.flc.api.dto.*;
import com.yeejoin.amos.boot.module.tzs.flc.api.dto.CylinderFillingCheckDataUnitDto; import com.yeejoin.amos.boot.module.tzs.flc.api.entity.*;
import com.yeejoin.amos.boot.module.tzs.flc.api.dto.CylinderFillingDataUnitDto;
import com.yeejoin.amos.boot.module.tzs.flc.api.dto.CylinderFillingUnloadDataDto;
import com.yeejoin.amos.boot.module.tzs.flc.api.dto.CylinderFillingUnloadDataUnitDto;
import com.yeejoin.amos.boot.module.tzs.flc.api.dto.CylinderInfoDataDto;
import com.yeejoin.amos.boot.module.tzs.flc.api.dto.CylinderInfoDataUnitDto;
import com.yeejoin.amos.boot.module.tzs.flc.api.dto.CylinderInfoDto;
import com.yeejoin.amos.boot.module.tzs.flc.api.dto.CylinderIntegrityDataDto;
import com.yeejoin.amos.boot.module.tzs.flc.api.dto.CylinderIntegrityDataUnitDto;
import com.yeejoin.amos.boot.module.tzs.flc.api.dto.CylinderTagsDataUnitDto;
import com.yeejoin.amos.boot.module.tzs.flc.api.dto.CylinderUnitDataDto;
import com.yeejoin.amos.boot.module.tzs.flc.api.entity.CylinderAreaData;
import com.yeejoin.amos.boot.module.tzs.flc.api.entity.CylinderFillingDataUnit;
import com.yeejoin.amos.boot.module.tzs.flc.api.entity.CylinderFillingUnloadData;
import com.yeejoin.amos.boot.module.tzs.flc.api.entity.CylinderFillingUnloadDataUnit;
import com.yeejoin.amos.boot.module.tzs.flc.api.entity.CylinderInfo;
import com.yeejoin.amos.boot.module.tzs.flc.api.entity.CylinderInfoDataUnit;
import com.yeejoin.amos.boot.module.tzs.flc.api.entity.CylinderIntegrityData;
import com.yeejoin.amos.boot.module.tzs.flc.api.entity.CylinderIntegrityDataUnit;
import com.yeejoin.amos.boot.module.tzs.flc.api.entity.CylinderTags;
import com.yeejoin.amos.boot.module.tzs.flc.api.entity.CylinderTagsDataUnit;
import com.yeejoin.amos.boot.module.tzs.flc.api.entity.CylinderUnit;
import com.yeejoin.amos.boot.module.tzs.flc.api.entity.CylinderUnitData;
import com.yeejoin.amos.boot.module.tzs.flc.api.mapper.CylinderInfoMapper; import com.yeejoin.amos.boot.module.tzs.flc.api.mapper.CylinderInfoMapper;
import com.yeejoin.amos.boot.module.tzs.flc.api.service.ICylinderInfoService; import com.yeejoin.amos.boot.module.tzs.flc.api.service.ICylinderInfoService;
import com.yeejoin.amos.component.rule.RuleTrigger; import com.yeejoin.amos.component.rule.RuleTrigger;
import com.yeejoin.amos.feign.systemctl.Systemctl; import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.RegionModel; import com.yeejoin.amos.feign.systemctl.model.RegionModel;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpHost;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import java.io.IOException;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.function.Consumer;
import java.util.function.IntConsumer;
/** /**
* 气瓶基本信息服务实现类 * 气瓶基本信息服务实现类
...@@ -150,6 +135,10 @@ public class CylinderInfoServiceImpl extends BaseService<CylinderInfoDto, Cylind ...@@ -150,6 +135,10 @@ public class CylinderInfoServiceImpl extends BaseService<CylinderInfoDto, Cylind
@Autowired @Autowired
CylinderInfoMapper cylinderInfoMapper; CylinderInfoMapper cylinderInfoMapper;
@Autowired
ESCylinderInfoRepository esCylinderInfoRepository;
/** /**
* 分页查询 * 分页查询
*/ */
...@@ -678,6 +667,198 @@ public class CylinderInfoServiceImpl extends BaseService<CylinderInfoDto, Cylind ...@@ -678,6 +667,198 @@ public class CylinderInfoServiceImpl extends BaseService<CylinderInfoDto, Cylind
}); });
} }
@Scheduled(cron = "${tzs.cylinder.info.cron}")
public void setTimeSaveCylinderInfoToES(){
Page<CylinderInfoDto> cylinderInfoPage = new Page<>();
Page<CylinderInfoDto> cyinderInfoList = cylinderInfoMapper.getCyinderInfoList(cylinderInfoPage);
Long count = cyinderInfoList.getCurrent();
Long times = 0L;
if (count != 0) {
times = count / 1000;
Long last = count % 1000;
if (last > 0) {
times++;
}
}
for (int i = 0; i <= times; i++) {
cylinderInfoPage.setCurrent(i);
cylinderInfoPage.setSize(1000);
cylinderInfoPage = cylinderInfoMapper.getCyinderInfoList(cylinderInfoPage);
for (CylinderInfoDto ci : cylinderInfoPage.getRecords()) {
saveCylinderInfoToES(ci);
}
}
}
@Override
public ESCylinderInfoDto saveCylinderInfoToES(CylinderInfoDto ci) {
ESCylinderInfoDto esCylinderInfoDto = new ESCylinderInfoDto();
BeanUtils.copyProperties(ci,esCylinderInfoDto);
ESCylinderInfoDto saveResult = esCylinderInfoRepository.save(esCylinderInfoDto);
if(!ObjectUtils.isEmpty(saveResult)){
//同步到es后修改
CylinderInfo cylinderInfo = new CylinderInfo();
cylinderInfo.setIsNotEs("1");
cylinderInfoMapper.update(cylinderInfo, new QueryWrapper<CylinderInfo>().eq("sequence_nbr", ci.getSequenceNbr()));
}
return saveResult;
}
@Override
public Page<ESCylinderInfoDto> queryByKeys(CylinderInfoDto cylinderInfoDto, int pageNum, int pageSize) {
Page<ESCylinderInfoDto> result = new Page<ESCylinderInfoDto>(pageNum, pageSize);
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("36.46.151.113", 9200, "http"))
);
SearchRequest request = new SearchRequest();
request.indices("cylinder_info");
//通用匹配规则,条件构建
boolean flag = true;
SearchSourceBuilder builder = new SearchSourceBuilder();
BoolQueryBuilder boolMust = QueryBuilders.boolQuery();
//匹配当前登录人
if (!ObjectUtils.isEmpty(cylinderInfoDto.getCreditCode())) {
flag = false;
BoolQueryBuilder meBuilder = QueryBuilders.boolQuery();
meBuilder.must(QueryBuilders.matchQuery("creditCode", cylinderInfoDto.getCreditCode()));
boolMust.must(meBuilder);
}
//匹配RegionCode
if (!ObjectUtils.isEmpty(cylinderInfoDto.getRegionCode())) {
flag = false;
BoolQueryBuilder appIdBuilder = QueryBuilders.boolQuery();
appIdBuilder.must(QueryBuilders.matchQuery("regionCode", "*" + cylinderInfoDto.getRegionCode() + "*"));
boolMust.should(appIdBuilder);
}
//匹配appid
if (!ObjectUtils.isEmpty(cylinderInfoDto.getAppId())) {
flag = false;
BoolQueryBuilder appIdBuilder = QueryBuilders.boolQuery();
appIdBuilder.must(QueryBuilders.matchQuery("appId", "*" + cylinderInfoDto.getAppId() + "*"));
boolMust.should(appIdBuilder);
}
//匹配产权单位
if (!ObjectUtils.isEmpty(cylinderInfoDto.getUnitName())) {
flag = false;
BoolQueryBuilder query = QueryBuilders.boolQuery();
query.must(QueryBuilders.matchQuery("unitName", "*" + cylinderInfoDto.getUnitName() + "*"));
boolMust.must(query);
}
//匹配出厂编号
if (!ObjectUtils.isEmpty(cylinderInfoDto.getFactoryNum())) {
flag = false;
BoolQueryBuilder query = QueryBuilders.boolQuery();
query.must(QueryBuilders.matchQuery("factoryNum", "*" + cylinderInfoDto.getFactoryNum() + "*"));
boolMust.must(query);
}
//匹配气瓶品种
if (!ObjectUtils.isEmpty(cylinderInfoDto.getCylinderVariety())) {
flag = false;
BoolQueryBuilder query = QueryBuilders.boolQuery();
query.must(QueryBuilders.matchQuery("cylinderVariety", cylinderInfoDto.getCylinderVariety()));
boolMust.must(query);
}
//匹配二维码编码
if (!ObjectUtils.isEmpty(cylinderInfoDto.getQrCode())) {
flag = false;
BoolQueryBuilder query = QueryBuilders.boolQuery();
query.must(QueryBuilders.matchQuery("qrCode", "*" + cylinderInfoDto.getQrCode() + "*"));
boolMust.must(query);
}
//匹配电子标签
if (!ObjectUtils.isEmpty(cylinderInfoDto.getElectronicLabelCode())) {
flag = false;
BoolQueryBuilder query = QueryBuilders.boolQuery();
query.must(QueryBuilders.matchQuery("electronicLabelCode", "*" + cylinderInfoDto.getElectronicLabelCode() + "*"));
boolMust.must(query);
}
//匹配气瓶唯一标识
if (!ObjectUtils.isEmpty(cylinderInfoDto.getSequenceCode())) {
flag = false;
BoolQueryBuilder sequenceCodeBuilder = QueryBuilders.boolQuery();
sequenceCodeBuilder.must(QueryBuilders.matchQuery("sequenceCode", cylinderInfoDto.getSequenceCode()));
boolMust.must(sequenceCodeBuilder);
}
//匹配单位内部编号
if (!ObjectUtils.isEmpty(cylinderInfoDto.getUnitInnerCode())) {
flag = false;
BoolQueryBuilder query = QueryBuilders.boolQuery();
query.must(QueryBuilders.matchQuery("unitInnerCode", "*" + cylinderInfoDto.getUnitInnerCode() + "*"));
boolMust.must(query);
}
//气瓶状态
if (!ObjectUtils.isEmpty(cylinderInfoDto.getCylinderStatus())) {
flag = false;
BoolQueryBuilder query = QueryBuilders.boolQuery();
query.must(QueryBuilders.matchQuery("cylinderStatus", cylinderInfoDto.getCylinderStatus()));
boolMust.must(query);
}
//制造单位
if (!ObjectUtils.isEmpty(cylinderInfoDto.getManufacturingUnit())) {
flag = false;
BoolQueryBuilder query = QueryBuilders.boolQuery();
query.must(QueryBuilders.matchQuery("manufacturingUnit", "*" + cylinderInfoDto.getManufacturingUnit() + "*"));
boolMust.must(query);
}
//检验日期
if (!ObjectUtils.isEmpty(cylinderInfoDto.getInspectionDateStart()) && !ObjectUtils.isEmpty(cylinderInfoDto.getInspectionDateEnd())) {
flag = false;
BoolQueryBuilder query = QueryBuilders.boolQuery();
query.must(QueryBuilders.rangeQuery("inspectionDate").from(cylinderInfoDto.getInspectionDateStart()).to(cylinderInfoDto.getInspectionDateEnd()));
boolMust.must(query);
}
if(flag) { // 搜索全部
boolMust.must(QueryBuilders.matchAllQuery());
}
builder.query(boolMust);
builder.from((pageNum - 1) * pageSize);
builder.size(pageSize);
request.source(builder);
List<ESCylinderInfoDto> list = new LinkedList<>();
long totle = 0;
try {
SearchResponse response = esClient.search(request, RequestOptions.DEFAULT);
for (org.elasticsearch.search.SearchHit hit : response.getHits()) {
System.out.println(hit);
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(hit);
ESCylinderInfoDto esCylinderInfoDto = JSONObject.toJavaObject(jsonObject.getJSONObject("sourceAsMap"), ESCylinderInfoDto.class);
list.add(esCylinderInfoDto);
}
totle = response.getInternalResponse().hits().getTotalHits().value;
result.setRecords(list);
result.setTotal(totle);
} catch (IOException e) {
throw new RuntimeException(e);
}
return result;
}
/** /**
* 根据月份统计 * 根据月份统计
*/ */
...@@ -847,6 +1028,11 @@ public class CylinderInfoServiceImpl extends BaseService<CylinderInfoDto, Cylind ...@@ -847,6 +1028,11 @@ public class CylinderInfoServiceImpl extends BaseService<CylinderInfoDto, Cylind
return cylinderInfoMapper.cyinderInfoList(page,cylinderInfoDto,sort,appids); return cylinderInfoMapper.cyinderInfoList(page,cylinderInfoDto,sort,appids);
} }
public Page<CylinderInfoDto> getCyinderInfoList(Page<CylinderInfoDto> page) {
return cylinderInfoMapper.getCyinderInfoList(page);
}
public Page<CylinderInfoDto> cyinderOutInfoList(Page<CylinderInfoDto> page, CylinderInfoDto cylinderInfoDto, String sort,List<String> appids){ public Page<CylinderInfoDto> cyinderOutInfoList(Page<CylinderInfoDto> page, CylinderInfoDto cylinderInfoDto, String sort,List<String> appids){
return cylinderInfoMapper.cyinderOutInfoList(page,cylinderInfoDto,sort,appids); return cylinderInfoMapper.cyinderOutInfoList(page,cylinderInfoDto,sort,appids);
} }
......
...@@ -143,5 +143,10 @@ rule.definition.load=false ...@@ -143,5 +143,10 @@ rule.definition.load=false
rule.definition.default-agency=tzs rule.definition.default-agency=tzs
rule.definition.local-ip=172.16.10.210 rule.definition.local-ip=172.16.10.210
#\u6C14\u74F6\u5145\u88C5\u4FE1\u606F\u5B9A\u65F6\u540C\u6B65\u81F3es
tzs.cylinder.fill.cron=0 0 12 * * ?
#\u6C14\u74F6\u57FA\u672C\u4FE1\u606F\u5B9A\u65F6\u540C\u6B65\u81F3es
tzs.cylinder.info.cron=0 0 1 * * ?
# ?????????? # ??????????
minio.url.path=http://172.16.10.210:9000/ minio.url.path=http://172.16.10.210:9000/
\ No newline at end of file
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