Commit 32058d9a authored by tangwei's avatar tangwei

解决冲突

parents cfd7de99 9679e4ca
...@@ -47,6 +47,18 @@ ...@@ -47,6 +47,18 @@
<artifactId>easypoi-annotation</artifactId> <artifactId>easypoi-annotation</artifactId>
<version>3.0.3</version> <version>3.0.3</version>
</dependency> </dependency>
<!-- itext pdf相关 -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13</version>
</dependency>
<!-- itext asian 字体相关 -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
</dependencies> </dependencies>
</project> </project>
...@@ -17,7 +17,7 @@ import java.util.Date; ...@@ -17,7 +17,7 @@ import java.util.Date;
@Data @Data
public class BaseEntity implements Serializable{ public class BaseEntity implements Serializable{
/** /**
* *
*/ */
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
......
package com.yeejoin.amos.boot.biz.common.utils;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import javax.servlet.http.HttpServletResponse;
/**
* PDF工具类
*/
public class PdfUtils {
private static int maxWidth = 520;
public static Document createFile(HttpServletResponse response) { // 设置页面大小,联系文件
Document document=new Document();
document.setPageSize(PageSize.A4);
document.setPageCount(3);
try {
PdfWriter.getInstance(document, response.getOutputStream());
document.open();
} catch (Exception e) {
e.printStackTrace();
}
return document;
}
/**
*
* @param value 单元格数据
* @param font 单元格样式
* @param align 位置
* @param colspan 占几列
* @param row 占几行
* @param size 高度
* @return
*/
public static PdfPCell createCell(String value, Font font, int align, int colspan, int row, int size){
PdfPCell cell = new PdfPCell();
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setHorizontalAlignment(align);
cell.setColspan(colspan);
cell.setPhrase(new Phrase(value,font));
cell.setFixedHeight(size);
if (row != 1) {
cell.setRowspan(row);
}
return cell;
}
public static PdfPCell createCell(Image image, int align, int colspan){
PdfPCell cell = new PdfPCell();
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setHorizontalAlignment(align);
cell.setColspan(colspan);
cell.setImage(image);
cell.setPadding(3.0f);
cell.setBorderWidthLeft(0);
cell.setBorderWidthRight(0);
cell.setBorderWidthTop(0);
cell.setBorderWidthBottom(1);
return cell;
}
// 创建一个几列的Table
public static PdfPTable createTable(int colNumber){
PdfPTable table = new PdfPTable(colNumber);
try{
table.setTotalWidth(maxWidth);
table.setLockedWidth(true);
table.setHorizontalAlignment(Element.ALIGN_CENTER);
}catch(Exception e){
e.printStackTrace();
}
return table;
}
}
package com.yeejoin.amos.boot.module.common.api.dto; package com.yeejoin.amos.boot.module.common.api.dto;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.util.Date; import java.util.Date;
/** /**
* 值班人员日期关联关系表 * 值班人员日期关联关系表
* *
* @author system_generator * @author system_generator
* @date 2021-07-06 * @date 2021-07-06
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ApiModel(value="DutyPersonShiftDto", description="值班人员日期关联关系表") @ApiModel(value = "DutyPersonShiftDto", description = "值班人员日期关联关系表")
public class DutyPersonShiftDto extends BaseDto { public class DutyPersonShiftDto extends BaseDto {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "值班日期") @ApiModelProperty(value = "值班日期")
private Date dutyDate; private Date dutyDate;
...@@ -33,10 +33,13 @@ public class DutyPersonShiftDto extends BaseDto { ...@@ -33,10 +33,13 @@ public class DutyPersonShiftDto extends BaseDto {
@ApiModelProperty(value = "更新人员") @ApiModelProperty(value = "更新人员")
private String recUserName; private String recUserName;
@ApiModelProperty(value = "班次名称") @ApiModelProperty(value = "班次名称")
private String shiftName; private String shiftName;
@ApiModelProperty(value = "应用标识(数据隔离使用)") @ApiModelProperty(value = "应用标识(数据隔离使用)")
private String appKey; private String appKey;
@ApiModelProperty(value = "颜色")
private String color;
} }
...@@ -70,4 +70,20 @@ public interface DynamicFormInstanceMapper extends BaseMapper<DynamicFormInstanc ...@@ -70,4 +70,20 @@ public interface DynamicFormInstanceMapper extends BaseMapper<DynamicFormInstanc
@Param("appKey") String appKey, @Param("appKey") String appKey,
@Param("groupCode") String groupCode, @Param("groupCode") String groupCode,
@Param("params") Map<String, String> params); @Param("params") Map<String, String> params);
/**
* 查询当前值班信息
* @param dutyDay 值班日期
* @param shiftIds 班次id
* @param fieldCodes 动态列
* @param appKey 应用标识
* @param groupCode 表单类型
* @return List<Map < String, Object>>
*/
List<Map<String, Object>> listOnDutyPerson(
@Param("dutyDate") String dutyDay,
@Param("shiftId") String shiftIds,
@Param("fieldCodes") Map<String, Object> fieldCodes,
@Param("appKey") String appKey,
@Param("groupCode") String groupCode);
} }
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeejoin.amos.boot.module.common.api.mapper.DynamicFormInstanceMapper"> <mapper namespace="com.yeejoin.amos.boot.module.common.api.mapper.DynamicFormInstanceMapper">
<select id="selectListByCalledId" resultType="com.yeejoin.amos.boot.module.common.api.dto.DynamicFormInstanceDto"> <select id="selectListByCalledId" resultType="com.yeejoin.amos.boot.module.common.api.dto.DynamicFormInstanceDto">
SELECT SELECT v.sequence_nbr sequenceNbr,
v.sequence_nbr sequenceNbr, v.form_column_id formColumnId,
v.form_column_id formColumnId, v.instance_id instanceId,
v.instance_id instanceId, v.group_code groupCode,
v.group_code groupCode, v.field_name fieldName,
v.field_name fieldName, v.field_code fieldCode,
v.field_code fieldCode, v.field_value fieldValue,
v.field_value fieldValue, v.field_value_label fieldValueLabel,
v.field_value_label fieldValueLabel, v.rec_user_name recUserName,
v.rec_user_name recUserName, v.rec_user_id recUserId,
v.rec_user_id recUserId, v.rec_date recDate,
v.rec_date recDate, v.is_delete isDelete,
v.is_delete isDelete, v.block block,
v.block block, f.field_type fieldType
f.field_type fieldType FROM cb_dynamic_form_instance v
FROM LEFT JOIN cb_dynamic_form_column f ON f.sequence_nbr = v.form_column_id
cb_dynamic_form_instance v WHERE v.instance_id = #{id}
LEFT JOIN cb_dynamic_form_column f ON f.sequence_nbr = v.form_column_id </select>
WHERE v.instance_id=#{id} <select id="listAll" resultType="java.util.Map">
</select> select
<select id="listAll" resultType="java.util.Map"> d.*
select from
d.* (
from select
( i.INSTANCE_ID instanceId,
select i.GROUP_CODE groupCode,
i.INSTANCE_ID instanceId, <foreach collection="fieldCodes" item="value" index="key" separator=",">
i.GROUP_CODE groupCode, MAX(CASE WHEN i.FIELD_CODE = #{key} THEN i.FIELD_VALUE END) as ${key}
<foreach collection="fieldCodes" item="value" index="key" separator=","> </foreach>
MAX(CASE WHEN i.FIELD_CODE = #{key} THEN i.FIELD_VALUE END) as ${key} from
</foreach> cb_dynamic_form_instance i
from where i.GROUP_CODE = #{groupCode}
cb_dynamic_form_instance i and i.APP_KEY = #{appKey}
where i.GROUP_CODE = #{groupCode} GROUP by
and i.APP_KEY = #{appKey} i.INSTANCE_ID)d
GROUP by <if test="params != null and params.size() > 0">
i.INSTANCE_ID)d where
<if test="params != null and params.size() > 0"> 1=1
where <foreach collection="params" index="key" item="value" separator="">
1=1 <choose>
<foreach collection="params" index="key" item="value" separator=""> <when test="fieldCodes[key] == 'like' and value !=null and value !=''">
<choose> and d.${key} like concat('%',#{value},'%')
<when test="fieldCodes[key] == 'like' and value !=null and value !=''"> </when>
and d.${key} like concat('%',#{value},'%') <when test="fieldCodes[key] == 'eq' and value !=null and value !=''">
</when> and d.${key} = #{value}
<when test="fieldCodes[key] == 'eq' and value !=null and value !=''"> </when>
and d.${key} = #{value} </choose>
</when> </foreach>
</choose> </if>
</foreach> order by instanceId desc
</if> </select>
order by instanceId desc <select id="pageList" resultType="java.util.Map">
</select> select
<select id="pageList" resultType="java.util.Map"> d.*
select from
d.* (
from select
( i.INSTANCE_ID instanceId,
select i.GROUP_CODE groupCode,
i.INSTANCE_ID instanceId, <foreach collection="fieldCodes" item="value" index="key" separator=",">
i.GROUP_CODE groupCode, MAX(CASE WHEN i.FIELD_CODE = #{key} THEN i.FIELD_VALUE END) as ${key}
<foreach collection="fieldCodes" item="value" index="key" separator=","> </foreach>
MAX(CASE WHEN i.FIELD_CODE = #{key} THEN i.FIELD_VALUE END) as ${key} from
</foreach> cb_dynamic_form_instance i
from where
cb_dynamic_form_instance i i.GROUP_CODE = #{groupCode}
where <if test="appKey != null and appKey !=''">
i.GROUP_CODE = #{groupCode} and i.APP_KEY = #{appKey}
<if test="appKey != null and appKey !=''"> </if>
and i.APP_KEY = #{appKey} GROUP by
</if> i.INSTANCE_ID)d
GROUP by <if test="params != null and params.size() > 0">
i.INSTANCE_ID)d where
<if test="params != null and params.size() > 0"> 1=1
where <foreach collection="params" index="key" item="value" separator="">
1=1 <choose>
<foreach collection="params" index="key" item="value" separator=""> <when test="fieldCodes[key] == 'like' and value !=null and value !=''">
<choose> and d.${key} like concat('%',#{value},'%')
<when test="fieldCodes[key] == 'like' and value !=null and value !=''"> </when>
and d.${key} like concat('%',#{value},'%') <when test="fieldCodes[key] == 'eq' and value !=null and value !=''">
</when> and d.${key} = #{value}
<when test="fieldCodes[key] == 'eq' and value !=null and value !=''"> </when>
and d.${key} = #{value} </choose>
</when> </foreach>
</choose> </if>
</foreach> order by instanceId desc
</if> </select>
order by instanceId desc <select id="listOneDayDutyPerson" resultType="java.util.Map">
</select> select
<select id="listOneDayDutyPerson" resultType="java.util.Map"> d.*,
select ps.shift_id as shiftId,
d.*, ps.duty_date as dutyDate,
ps.shift_id as shiftId, ds.name as shiftName
ps.duty_date as dutyDate, from
ds.name as shiftName (
from select
( i.INSTANCE_ID instanceId,
select i.GROUP_CODE groupCode,
i.INSTANCE_ID instanceId, <foreach collection="fieldCodes" item="value" index="key" separator=",">
i.GROUP_CODE groupCode, MAX(CASE WHEN i.FIELD_CODE = #{key} THEN i.FIELD_VALUE END) as ${key}
<foreach collection="fieldCodes" item="value" index="key" separator=","> </foreach>
MAX(CASE WHEN i.FIELD_CODE = #{key} THEN i.FIELD_VALUE END) as ${key} from
</foreach> cb_dynamic_form_instance i
from where i.GROUP_CODE = #{groupCode}
cb_dynamic_form_instance i and i.APP_KEY = #{appKey}
where i.GROUP_CODE = #{groupCode} GROUP by
and i.APP_KEY = #{appKey} i.INSTANCE_ID ) d,
GROUP by cb_duty_person_shift ps,
i.INSTANCE_ID ) d, cb_duty_shift ds
cb_duty_person_shift ps, where
cb_duty_shift ds d.instanceId = ps.instance_id
where and ps.shift_id = ds.sequence_nbr
d.instanceId = ps.instance_id and ps.duty_date = #{dutyDate}
and ps.shift_id = ds.sequence_nbr <if test="shiftId != null and shiftId != ''">
and ps.duty_date = #{dutyDate} and ps.shift_id = #{shiftId}
<if test="shiftId != null and shiftId != ''"> </if>
and ps.shift_id = #{shiftId} <if test="params != null and params.size() > 0">
</if> <foreach collection="params" index="key" item="value" separator="">
<if test="params != null and params.size() > 0"> <choose>
<foreach collection="params" index="key" item="value" separator=""> <when test="fieldCodes[key] == 'like' and value !=null and value !=''">
<choose> and d.${key} like concat('%',#{value},'%')
<when test="fieldCodes[key] == 'like' and value !=null and value !=''"> </when>
and d.${key} like concat('%',#{value},'%') <when test="fieldCodes[key] == 'eq' and value !=null and value !=''">
</when> and d.${key} = #{value}
<when test="fieldCodes[key] == 'eq' and value !=null and value !=''"> </when>
and d.${key} = #{value} </choose>
</when> </foreach>
</choose> </if>
</foreach> order by instanceId desc
</if> </select>
order by instanceId desc <select id="listOnDutyPerson" resultType="java.util.Map">
</select> select
d.*,
ps.shift_id as shiftId,
ps.duty_date as dutyDate,
ds.name as shiftName,
'在岗' state
from
(
select
i.INSTANCE_ID instanceId,
i.GROUP_CODE groupCode,
<foreach collection="fieldCodes" item="value" index="key" separator=",">
MAX(CASE WHEN i.FIELD_CODE = #{key} THEN i.FIELD_VALUE END) as ${key}
</foreach>
from
cb_dynamic_form_instance i
where i.GROUP_CODE = #{groupCode}
and i.APP_KEY = #{appKey}
GROUP by
i.INSTANCE_ID ) d,
cb_duty_person_shift ps,
cb_duty_shift ds
where
d.instanceId = ps.instance_id
and ps.shift_id = ds.sequence_nbr
and ps.duty_date = #{dutyDate}
<if test="shiftId != null and shiftId != ''">
and ps.shift_id in (#{shiftId})
</if>
order by instanceId desc
</select>
</mapper> </mapper>
...@@ -35,4 +35,7 @@ public class PowerTransferCompanyResourcesDto extends BaseDto { ...@@ -35,4 +35,7 @@ public class PowerTransferCompanyResourcesDto extends BaseDto {
@ApiModelProperty(value = "操作人名称") @ApiModelProperty(value = "操作人名称")
private String recUserName; private String recUserName;
@ApiModelProperty(value = "调派关联部门id")
protected Long powerTransferCompanyId;
} }
package com.yeejoin.amos.boot.module.jcs.api.dto;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 警情表单
*
* @author system_generator
* @date 2021-07-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ShiftChangeDto", description = "警情表单")
public class ShiftChangeDto extends BaseDto {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "基本信息id(来源动态表单)")
private Long instanceId;
@ApiModelProperty(value = "值班情况")
private JSONObject dutyJson;
@ApiModelProperty(value = "力量出动情况")
private JSONObject powerJson;
@ApiModelProperty(value = "交接事宜描述")
private String remark;
@ApiModelProperty(value = "操作人名称")
private String recUserName;
}
package com.yeejoin.amos.boot.module.jcs.api.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
@ApiModel("交接班记录详情")
public class ShiftChangeInfoDto extends ShiftChangeDto {
@ApiModelProperty("值班开始时间")
private String beginDate;
@ApiModelProperty("值班开始时间")
private String endDate;
@ApiModelProperty("机场值班领导")
private String jsDutyLeader;
@ApiModelProperty("消救部领导")
private String fireDutyLeader;
@ApiModelProperty("消防支队领导")
private String branchDutyLeader;
@ApiModelProperty("应急指挥科领导")
private String emcDutyLeader;
@ApiModelProperty("值班员正班")
private String dutyPersonOne;
@ApiModelProperty("值班员副班")
private String dutyPersonTwo;
@ApiModelProperty("接班员正班")
private String succeedPersonOne;
@ApiModelProperty("接班员副班")
private String succeedPersonTwo;
@ApiModelProperty("值班员经理")
private String dutyPersonLeader;
@ApiModelProperty("接班员经理")
private String succeedPersonLeader;
}
package com.yeejoin.amos.boot.module.jcs.api.entity;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* 交接班记录分页查询
*
* @author system_generator
* @date 2021-07-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName(value = "jc_shift_change", autoResultMap = true)
public class ShiftChange extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 基本信息id(来源动态表单)
*/
@TableField("instance_id")
private Long instanceId;
/**
* 值班情况
*/
@TableField(value = "duty_json", typeHandler = JacksonTypeHandler.class)
private JSONObject dutyJson;
/**
* 力量出动情况
*/
@TableField(value = "power_json", typeHandler = JacksonTypeHandler.class)
private JSONObject powerJson;
/**
* 交接事宜描述
*/
@TableField("remark")
private String remark;
/**
* 操作人名称
*/
@TableField("rec_user_name")
private String recUserName;
}
package com.yeejoin.amos.boot.module.jcs.api.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 值班情况枚举
*
* @author DELL
*/
@Getter
@AllArgsConstructor
public enum DutyInfoEnum {
// 接警情况
接警情况("JJQK", "接警情况"),
// 出动状态
力量出动("LLCD", "出动状态");
private String key;
private String name;
}
...@@ -2,6 +2,9 @@ package com.yeejoin.amos.boot.module.jcs.api.mapper; ...@@ -2,6 +2,9 @@ package com.yeejoin.amos.boot.module.jcs.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.boot.module.jcs.api.entity.AlertCalled; import com.yeejoin.amos.boot.module.jcs.api.entity.AlertCalled;
import org.apache.ibatis.annotations.Param;
import java.util.Map;
/** /**
* 警情接警记录 Mapper 接口 * 警情接警记录 Mapper 接口
...@@ -11,4 +14,5 @@ import com.yeejoin.amos.boot.module.jcs.api.entity.AlertCalled; ...@@ -11,4 +14,5 @@ import com.yeejoin.amos.boot.module.jcs.api.entity.AlertCalled;
*/ */
public interface AlertCalledMapper extends BaseMapper<AlertCalled> { public interface AlertCalledMapper extends BaseMapper<AlertCalled> {
Map<String, Integer> queryAlertStatusCount(@Param("beginDate") String beginDate, @Param("endDate") String endDate);
} }
package com.yeejoin.amos.boot.module.jcs.api.mapper; package com.yeejoin.amos.boot.module.jcs.api.mapper;
import java.util.List; import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.boot.module.jcs.api.dto.AlertFormValueDto; import com.yeejoin.amos.boot.module.jcs.api.dto.AlertFormValueDto;
import com.yeejoin.amos.boot.module.jcs.api.entity.AlertFormValue; import com.yeejoin.amos.boot.module.jcs.api.entity.AlertFormValue;
import org.apache.ibatis.annotations.Param;
/** /**
* Mapper 接口 * Mapper 接口
...@@ -16,4 +18,17 @@ public interface AlertFormValueMapper extends BaseMapper<AlertFormValue> { ...@@ -16,4 +18,17 @@ public interface AlertFormValueMapper extends BaseMapper<AlertFormValue> {
public List<AlertFormValueDto> selectListByCalledId(Long id); public List<AlertFormValueDto> selectListByCalledId(Long id);
/**
* 列转行查询
*
* @param fieldCodes 列
* @param groupCode 分组code
* @param params 查询参数
* @return List<Map>
*/
List<Map<String, Object>> listAll(
@Param("fieldCodes") List<String> fieldCodes,
@Param("groupCode") String groupCode,
@Param("params") Map<String, String> params
);
} }
...@@ -3,10 +3,12 @@ package com.yeejoin.amos.boot.module.jcs.api.mapper; ...@@ -3,10 +3,12 @@ package com.yeejoin.amos.boot.module.jcs.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferCompanyDto; import com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferCompanyDto;
import com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferCompanyResourcesDto; import com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferCompanyResourcesDto;
import com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferDto;
import com.yeejoin.amos.boot.module.jcs.api.entity.PowerTransfer; import com.yeejoin.amos.boot.module.jcs.api.entity.PowerTransfer;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 力量调派 Mapper 接口 * 力量调派 Mapper 接口
...@@ -26,4 +28,35 @@ public interface PowerTransferMapper extends BaseMapper<PowerTransfer> { ...@@ -26,4 +28,35 @@ public interface PowerTransferMapper extends BaseMapper<PowerTransfer> {
* @return * @return
*/ */
List<String> queryTransferCarIdsByAlertCalledId(@Param("alertCalledId") Long alertCalledId); List<String> queryTransferCarIdsByAlertCalledId(@Param("alertCalledId") Long alertCalledId);
/**
* 根据起止时间获取力量调派信息
*
* @param beginDate
* @param endDate
* @return
*/
List<PowerTransferDto> getPowerTransferInfo(@Param("beginDate") String beginDate, @Param("endDate") String endDate);
/**
* 根据起止时间获取力量调派单位信息
*
* @param beginDate
* @param endDate
* @return
*/
List<PowerTransferCompanyDto> getPowerTransferCompanyInfo(@Param("beginDate") String beginDate,
@Param("endDate") String endDate);
/**
*
* @param beginDate
* @param endDate
* @return
*/
List<PowerTransferCompanyResourcesDto> getPowerTransferCompanyResourcesInfo(@Param("beginDate") String beginDate,
@Param("endDate") String endDate);
Map<String, Object> getPowerTransferInfoCount(@Param("beginDate") String beginDate,
@Param("endDate") String endDate);
} }
package com.yeejoin.amos.boot.module.jcs.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.boot.module.jcs.api.entity.ShiftChange;
/**
* 警情表单 Mapper 接口
*
* @author system_generator
* @date 2021-07-13
*/
public interface ShiftChangeMapper extends BaseMapper<ShiftChange> {
}
package com.yeejoin.amos.boot.module.jcs.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.itextpdf.text.DocumentException;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;
/**
* 交接班记录表接口类
*
* @author system_generator
* @date 2021-07-13
*/
public interface IShiftChangeService {
/**
* 模型创建
*
* @param model 信息
* @return Map<String, Object>
*/
Map<String, Object> createFormAndEntry(Map<String, Object> model);
/**
* 删除完整信息
*
* @param sequenceNbr 主键
* @return Boolean
*/
Boolean removeOneById(Long sequenceNbr);
/**
* 交接班详情
*
* @param sequenceNbr 主键
* @return Map<String, Object>
*/
Map<String, Object> getOneBySeq(Long sequenceNbr);
/**
* 分页查询
*
* @param current 当前页
* @param size 页大小
* @return IPage<Map < String, Object>>
*/
IPage<Map<String, Object>> queryForShiftChangePage(int current, int size);
/**
* 查询全部值班记录
*
* @return List<Map < String, Object>>
*/
List<Map<String, Object>> queryForShiftChangeList();
/**
* 最近交班记录
* @return Map<String, Object>
*/
Map<String, Object> lastRecord();
/**
* 根据交接班记录id生成pdf
*/
void exportPdfById(HttpServletResponse response, Long shiftChangeId) throws IOException, DocumentException;
}
...@@ -2,4 +2,14 @@ ...@@ -2,4 +2,14 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeejoin.amos.boot.module.jcs.api.mapper.AlertCalledMapper"> <mapper namespace="com.yeejoin.amos.boot.module.jcs.api.mapper.AlertCalledMapper">
<select id="queryAlertStatusCount" resultType="java.util.Map">
SELECT
count( 1 ) calledCount,
sum( CASE WHEN alert_status = 1 THEN 1 ELSE 0 END ) finishedCount,
sum( CASE WHEN alert_type_code = 230 THEN 1 ELSE 0 END ) majorAlertCount
FROM
jc_alert_called
WHERE
call_time BETWEEN #{beginDate} AND #{endDate}
</select>
</mapper> </mapper>
...@@ -22,4 +22,34 @@ ...@@ -22,4 +22,34 @@
LEFT JOIN jc_alert_form f ON f.sequence_nbr = v.alert_form_id LEFT JOIN jc_alert_form f ON f.sequence_nbr = v.alert_form_id
WHERE v.alert_called_id=#{id} WHERE v.alert_called_id=#{id}
</select> </select>
<select id="listAll" resultType="java.util.Map">
select
d.*
from
(
select
i.alert_called_id instanceId,
i.alert_type_code groupCode,
i.rec_date recDate,
<foreach collection="fieldCodes" item="item" index="key" separator=",">
MAX(CASE WHEN i.FIELD_CODE = #{item} THEN i.FIELD_VALUE ELSE '' END) as ${item}
</foreach>
from
jc_alert_form_value i
where i.alert_type_code = #{groupCode}
GROUP by
i.alert_called_id)d
<if test="params != null and params.size > 0 ">
where 1=1
<foreach collection="params" index="key" item="value">
<if test="key != null and key == 'beginDate'">
and d.recDate >= #{value}
</if>
<if test="key != null and key == 'endDate'">
and d.recDate <![CDATA[<=]]> #{value}
</if>
</foreach>
</if>
order by instanceId
</select>
</mapper> </mapper>
...@@ -36,13 +36,44 @@ ...@@ -36,13 +36,44 @@
having rec_date = (select rec_date from jc_power_transfer_company_resources order by rec_date desc limit 1) having rec_date = (select rec_date from jc_power_transfer_company_resources order by rec_date desc limit 1)
</select> </select>
<select id="queryTransferCarIdsByAlertCalledId" resultType="java.lang.String"> <select id="queryTransferCarIdsByAlertCalledId" resultType="java.lang.String">
SELECT SELECT ptcr.resources_id carId
ptcr.resources_id carId FROM `jc_power_transfer` pt
FROM LEFT JOIN jc_power_transfer_company ptc ON ptc.power_transfer_id = pt.sequence_nbr
`jc_power_transfer` pt LEFT JOIN jc_power_transfer_company_resources ptcr ON ptcr.power_transfer_company_id = ptc.sequence_nbr
LEFT JOIN jc_power_transfer_company ptc ON ptc.power_transfer_id = pt.sequence_nbr WHERE pt.alert_called_id = #{alertCalledId}
LEFT JOIN jc_power_transfer_company_resources ptcr ON ptcr.power_transfer_company_id = ptc.sequence_nbr
WHERE
pt.alert_called_id = #{alertCalledId}
</select> </select>
<select id="getPowerTransferInfoCount" resultType="java.util.Map">
select count(distinct pt.sequence_nbr) transfer_count, count(distinct resources_id) car_count, 0 end_count, 0 no_return_car_count
from jc_power_transfer pt
left join jc_power_transfer_company ptc on pt.sequence_nbr = ptc.power_transfer_id
left join jc_power_transfer_company_resources ptcr on ptc.sequence_nbr = ptcr.power_transfer_company_id
where pt.rec_date BETWEEN #{beginDate} AND #{endDate}
order by pt.rec_date asc
</select>
<select id="getPowerTransferInfo" resultType="com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferDto">
select sequence_nbr, rescue_grid
from jc_power_transfer pt
where pt.rec_date BETWEEN #{beginDate} AND #{endDate}
order by pt.rec_date asc
</select>
<select id="getPowerTransferCompanyInfo"
resultType="com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferCompanyDto">
select ptc.sequence_nbr, ptc.company_name, ptc.is_distribution_agencies, ptc.power_transfer_id
from jc_power_transfer pt
left join jc_power_transfer_company ptc on pt.sequence_nbr = ptc.power_transfer_id
where pt.rec_date BETWEEN #{beginDate} AND #{endDate}
order by pt.rec_date asc
</select>
<select id="getPowerTransferCompanyResourcesInfo"
resultType="com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferCompanyResourcesDto">
select ptcr.power_transfer_company_id, ptcr.type, ptcr.resources_num, ptcr.resources_id
from jc_power_transfer pt
left join jc_power_transfer_company ptc on pt.sequence_nbr = ptc.power_transfer_id
left join jc_power_transfer_company_resources ptcr on ptc.sequence_nbr = ptcr.power_transfer_company_id
where pt.rec_date BETWEEN #{beginDate} AND #{endDate}
and ptc.is_distribution_agencies = 0
order by pt.rec_date asc
</select>
</mapper> </mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeejoin.amos.boot.module.jcs.api.mapper.ShiftChangeMapper">
</mapper>
...@@ -143,4 +143,5 @@ public class DutyCarController extends BaseController { ...@@ -143,4 +143,5 @@ public class DutyCarController extends BaseController {
@ApiParam(value = "岗位") @RequestParam(required = false) String postType){ @ApiParam(value = "岗位") @RequestParam(required = false) String postType){
return ResponseHelper.buildResponse(iDutyCarService.dayDutyPersonList(dutyDay,shiftId,postType)); return ResponseHelper.buildResponse(iDutyCarService.dayDutyPersonList(dutyDay,shiftId,postType));
} }
} }
\ No newline at end of file
...@@ -14,6 +14,7 @@ import org.typroject.tyboot.core.restful.doc.TycloudOperation; ...@@ -14,6 +14,7 @@ import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper; import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel; import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.text.ParseException; import java.text.ParseException;
import java.util.List; import java.util.List;
...@@ -111,6 +112,7 @@ public class DutyPersonController extends BaseController { ...@@ -111,6 +112,7 @@ public class DutyPersonController extends BaseController {
/** /**
* 值班数据删除 * 值班数据删除
*
* @param instanceId 实例id * @param instanceId 实例id
* @return ResponseModel * @return ResponseModel
*/ */
...@@ -129,7 +131,8 @@ public class DutyPersonController extends BaseController { ...@@ -129,7 +131,8 @@ public class DutyPersonController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping("/exportExcel") @GetMapping("/exportExcel")
@ApiOperation(httpMethod = "GET", value = "人员执勤导出", notes = "人员执勤导出") @ApiOperation(httpMethod = "GET", value = "人员执勤导出", notes = "人员执勤导出")
public ResponseModel exportExcel(HttpServletResponse response, @ApiParam(value = "开始日期", required = true) @RequestParam String beginDate, public ResponseModel exportExcel(HttpServletResponse response,
@ApiParam(value = "开始日期", required = true) @RequestParam String beginDate,
@ApiParam(value = "结束日期", required = true) @RequestParam String endDate) throws ParseException { @ApiParam(value = "结束日期", required = true) @RequestParam String endDate) throws ParseException {
return ResponseHelper.buildResponse(iDutyPersonService.downloadList(beginDate, endDate)); return ResponseHelper.buildResponse(iDutyPersonService.downloadList(beginDate, endDate));
} }
...@@ -137,9 +140,19 @@ public class DutyPersonController extends BaseController { ...@@ -137,9 +140,19 @@ public class DutyPersonController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation("查询指定日期值班人信息列表") @ApiOperation("查询指定日期值班人信息列表")
@GetMapping("/person/{dutyDay}/list") @GetMapping("/person/{dutyDay}/list")
public ResponseModel listDutyPerson(@ApiParam(value = "值班日期",required = true) @PathVariable String dutyDay, public ResponseModel listDutyPerson(@ApiParam(value = "值班日期", required = true) @PathVariable String dutyDay,
@ApiParam(value = "班次id") @RequestParam(required = false) Long shiftId, @ApiParam(value = "班次id") @RequestParam(required = false) Long shiftId,
@ApiParam(value = "岗位") @RequestParam(required = false) String postType) { @ApiParam(value = "岗位") @RequestParam(required = false) String postType) {
return ResponseHelper.buildResponse(iDutyPersonService.dayDutyPersonList(dutyDay, shiftId, postType)); return ResponseHelper.buildResponse(iDutyPersonService.dayDutyPersonList(dutyDay, shiftId, postType));
} }
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation("查询当前值班人信息列表")
@GetMapping("/person/on_duty/list")
public ResponseModel listOnDutyPerson(HttpServletRequest request) {
String appKey = request.getHeader("appKey");
return ResponseHelper.buildResponse(iDutyPersonService.listOnDutyPerson(appKey));
}
} }
...@@ -57,6 +57,7 @@ public interface IDutyCommonService { ...@@ -57,6 +57,7 @@ public interface IDutyCommonService {
/** /**
* 删除值班数据 * 删除值班数据
*
* @param instanceId 实例id * @param instanceId 实例id
* @return Boolean * @return Boolean
*/ */
...@@ -64,10 +65,18 @@ public interface IDutyCommonService { ...@@ -64,10 +65,18 @@ public interface IDutyCommonService {
/** /**
* 查询指定条件的值班人信息 * 查询指定条件的值班人信息
* @param dutyDay 查询条件 *
* @param shiftId 班次 * @param dutyDay 查询条件
* @param shiftId 班次
* @param postType 岗位 * @param postType 岗位
* @return List<Map<String, Object>> * @return List<Map < String, Object>>
*/
List<Map<String, Object>> dayDutyPersonList(String dutyDay, Long shiftId, String postType);
/**
* 查询当前值班人信息
*
* @return List<Map < String, Object>>
*/ */
List<Map<String, Object>> dayDutyPersonList(String dutyDay,Long shiftId,String postType); List<Map<String, Object>> listOnDutyPerson(String appKey);
} }
...@@ -31,17 +31,8 @@ public class DutyCarServiceImpl extends DutyCommonServiceImpl implements IDutyCa ...@@ -31,17 +31,8 @@ public class DutyCarServiceImpl extends DutyCommonServiceImpl implements IDutyCa
public DutyCarDto save(DutyCarDto dutyCarDto) { public DutyCarDto save(DutyCarDto dutyCarDto) {
//1.保存行数据 //1.保存行数据
String groupCode = this.getGroupCode(); String groupCode = this.getGroupCode();
List<DynamicFormColumn> columns = dynamicFormColumnService.list(new LambdaQueryWrapper<DynamicFormColumn>().eq(DynamicFormColumn::getGroupCode, groupCode));
Map<String, Object> map = Bean.BeantoMap(dutyCarDto); Map<String, Object> map = Bean.BeantoMap(dutyCarDto);
Long instanceId = sequence.nextId(); Long instanceId = dynamicFormInstanceService.commonSave(groupCode,map);
List<DynamicFormInstance> instances = columns.stream().map(column -> {
DynamicFormInstance instance = new DynamicFormInstance();
buildFormInstanceData(instanceId, map, column, instance);
return instance;
}).collect(Collectors.toList());
if (!instances.isEmpty()) {
dynamicFormInstanceService.saveBatch(instances);
}
//2.保存值班信息 //2.保存值班信息
insertPersonShift(instanceId, dutyCarDto); insertPersonShift(instanceId, dutyCarDto);
//3.返回保存后的数据 //3.返回保存后的数据
......
...@@ -4,31 +4,31 @@ import com.alibaba.fastjson.JSONArray; ...@@ -4,31 +4,31 @@ import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Sequence; import com.baomidou.mybatisplus.core.toolkit.Sequence;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity; import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils; import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
import com.yeejoin.amos.boot.module.common.api.dto.DutyCarDto; import com.yeejoin.amos.boot.module.common.api.dto.DutyCarDto;
import com.yeejoin.amos.boot.module.common.api.dto.DutyPersonDto; import com.yeejoin.amos.boot.module.common.api.dto.DutyPersonDto;
import com.yeejoin.amos.boot.module.common.api.dto.DutyPersonShiftDto; import com.yeejoin.amos.boot.module.common.api.dto.DutyPersonShiftDto;
import com.yeejoin.amos.boot.module.common.api.dto.DutyShiftDto;
import com.yeejoin.amos.boot.module.common.api.entity.DutyPersonShift; import com.yeejoin.amos.boot.module.common.api.entity.DutyPersonShift;
import com.yeejoin.amos.boot.module.common.api.entity.DutyShift; import com.yeejoin.amos.boot.module.common.api.entity.DutyShift;
import com.yeejoin.amos.boot.module.common.api.entity.DynamicFormColumn; import com.yeejoin.amos.boot.module.common.api.entity.DynamicFormColumn;
import com.yeejoin.amos.boot.module.common.api.entity.DynamicFormInstance; import com.yeejoin.amos.boot.module.common.api.entity.DynamicFormInstance;
import com.yeejoin.amos.boot.module.common.api.enums.DutyViewTypeEnum; import com.yeejoin.amos.boot.module.common.api.enums.DutyViewTypeEnum;
import com.yeejoin.amos.boot.module.common.biz.service.IDutyCommonService; import com.yeejoin.amos.boot.module.common.biz.service.IDutyCommonService;
import org.apache.commons.lang3.StringUtils;
import org.joda.time.DateTime;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.core.foundation.context.RequestContext; import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.Bean; import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -56,6 +56,9 @@ public class DutyCommonServiceImpl implements IDutyCommonService { ...@@ -56,6 +56,9 @@ public class DutyCommonServiceImpl implements IDutyCommonService {
@Autowired @Autowired
DutyShiftServiceImpl dutyShiftService; DutyShiftServiceImpl dutyShiftService;
@Autowired
OrgUsrServiceImpl orgUsrService;
/** /**
* 每天单个班次执勤人数全部小于等于3人 * 每天单个班次执勤人数全部小于等于3人
*/ */
...@@ -71,11 +74,7 @@ public class DutyCommonServiceImpl implements IDutyCommonService { ...@@ -71,11 +74,7 @@ public class DutyCommonServiceImpl implements IDutyCommonService {
public IPage<Map<String, Object>> pageList(int current, int size, String beginDate, String endDate) throws ParseException { public IPage<Map<String, Object>> pageList(int current, int size, String beginDate, String endDate) throws ParseException {
//1.已column为准 进行返回 //1.已column为准 进行返回
String groupCode = this.getGroupCode(); String groupCode = this.getGroupCode();
Map<String, String> params = this.getRequestParamMap(); IPage<Map<String, Object>> iPage = dynamicFormInstanceService.pageList(current, size, groupCode);
List<DynamicFormColumn> columns = dynamicFormColumnService.list(new LambdaQueryWrapper<DynamicFormColumn>().eq(DynamicFormColumn::getGroupCode, groupCode));
Map<String, Object> fieldCodes = Bean.listToMap(columns, "fieldCode", "queryStrategy", DynamicFormColumn.class);
Page page = new Page(current, size);
IPage<Map<String, Object>> iPage = dynamicFormInstanceService.getBaseMapper().pageList(page, RequestContext.getAppKey(), fieldCodes, groupCode, params);
for (Map<String, Object> m : iPage.getRecords()) { for (Map<String, Object> m : iPage.getRecords()) {
this.fillDutyShiftData(beginDate, endDate, m); this.fillDutyShiftData(beginDate, endDate, m);
} }
...@@ -84,8 +83,10 @@ public class DutyCommonServiceImpl implements IDutyCommonService { ...@@ -84,8 +83,10 @@ public class DutyCommonServiceImpl implements IDutyCommonService {
private void fillDutyShiftData(String beginDate, String endDate, Map<String, Object> m) throws ParseException { private void fillDutyShiftData(String beginDate, String endDate, Map<String, Object> m) throws ParseException {
String instanceId = m.get("instanceId").toString(); String instanceId = m.get("instanceId").toString();
List<DutyShift> dutyShifts = dutyShiftService.list(new LambdaQueryWrapper<DutyShift>().eq(BaseEntity::getIsDelete, false).eq(DutyShift::getAppKey, RequestContext.getAppKey())); List<DutyShift> dutyShifts =
Map<Long, String> keyNameMap = dutyShifts.stream().collect(Collectors.toMap(BaseEntity::getSequenceNbr, DutyShift::getName)); dutyShiftService.list(new LambdaQueryWrapper<DutyShift>().eq(BaseEntity::getIsDelete, false).eq(DutyShift::getAppKey, RequestContext.getAppKey()));
Map<Long, DutyShift> keyNameMap = dutyShifts.stream().collect(Collectors.toMap(BaseEntity::getSequenceNbr,
Function.identity()));
List<DutyPersonShiftDto> personShiftList = dutyPersonShiftService.list(new LambdaQueryWrapper<DutyPersonShift>() List<DutyPersonShiftDto> personShiftList = dutyPersonShiftService.list(new LambdaQueryWrapper<DutyPersonShift>()
.eq(DutyPersonShift::getInstanceId, instanceId) .eq(DutyPersonShift::getInstanceId, instanceId)
.ge(beginDate != null, DutyPersonShift::getDutyDate, beginDate) .ge(beginDate != null, DutyPersonShift::getDutyDate, beginDate)
...@@ -93,7 +94,9 @@ public class DutyCommonServiceImpl implements IDutyCommonService { ...@@ -93,7 +94,9 @@ public class DutyCommonServiceImpl implements IDutyCommonService {
DutyPersonShiftDto dto = new DutyPersonShiftDto(); DutyPersonShiftDto dto = new DutyPersonShiftDto();
Bean.copyExistPropertis(e, dto); Bean.copyExistPropertis(e, dto);
//没值班信息,默认休 //没值班信息,默认休
dto.setShiftName(e.getShiftId() != null ? keyNameMap.get(e.getShiftId()) : "休"); DutyShift dutyShift = keyNameMap.get(e.getShiftId());
dto.setShiftName(dutyShift != null ? dutyShift.getName() : "休");
dto.setColor(dutyShift != null ? dutyShift.getColor() : "");
return dto; return dto;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
m.put("dutyShift", personShiftList); m.put("dutyShift", personShiftList);
...@@ -128,7 +131,8 @@ public class DutyCommonServiceImpl implements IDutyCommonService { ...@@ -128,7 +131,8 @@ public class DutyCommonServiceImpl implements IDutyCommonService {
} }
private DutyViewTypeEnum inferView(String beginDate, String endDate, String appKey) { private DutyViewTypeEnum inferView(String beginDate, String endDate, String appKey) {
Map<String, Long> result = dutyPersonShiftService.getBaseMapper().calMaxPersonAndShiftNum(beginDate, endDate, appKey, this.getGroupCode()); Map<String, Long> result = dutyPersonShiftService.getBaseMapper().calMaxPersonAndShiftNum(beginDate, endDate,
appKey, this.getGroupCode());
//计算班次最大执勤人数,时间区间内 //计算班次最大执勤人数,时间区间内
Long maxDutyPersonNumDay = result.get("maxDutyPersonNumDay"); Long maxDutyPersonNumDay = result.get("maxDutyPersonNumDay");
//计算天的最大班次数量,时间区间内 //计算天的最大班次数量,时间区间内
...@@ -144,10 +148,7 @@ public class DutyCommonServiceImpl implements IDutyCommonService { ...@@ -144,10 +148,7 @@ public class DutyCommonServiceImpl implements IDutyCommonService {
public List<Map<String, Object>> list(String beginDate, String endDate) throws ParseException { public List<Map<String, Object>> list(String beginDate, String endDate) throws ParseException {
//1.已column为准 进行返回 //1.已column为准 进行返回
String groupCode = this.getGroupCode(); String groupCode = this.getGroupCode();
Map<String, String> params = this.getRequestParamMap(); List<Map<String, Object>> list = dynamicFormInstanceService.listAll(groupCode);
List<DynamicFormColumn> columns = dynamicFormColumnService.list(new LambdaQueryWrapper<DynamicFormColumn>().eq(DynamicFormColumn::getGroupCode, groupCode));
Map<String, Object> fieldCodes = Bean.listToMap(columns, "fieldCode", "queryStrategy", DynamicFormColumn.class);
List<Map<String, Object>> list = dynamicFormInstanceService.getBaseMapper().listAll(RequestContext.getAppKey(), fieldCodes, groupCode, params);
//2.组织值班数据 //2.组织值班数据
for (Map<String, Object> map : list) { for (Map<String, Object> map : list) {
this.fillDutyShiftData(beginDate, endDate, map); this.fillDutyShiftData(beginDate, endDate, map);
...@@ -155,25 +156,6 @@ public class DutyCommonServiceImpl implements IDutyCommonService { ...@@ -155,25 +156,6 @@ public class DutyCommonServiceImpl implements IDutyCommonService {
return list; return list;
} }
private Map<String, String> getRequestParamMap() {
Map<String, String[]> parameterMap = request.getParameterMap();
Map<String, String[]> localMap = new HashMap<>();
localMap.putAll(parameterMap);
localMap.remove("current");
localMap.remove("size");
localMap.remove("beginDate");
localMap.remove("endDate");
Map<String, String> params = new HashMap<>();
if (!ValidationUtil.isEmpty(localMap)) {
for (String key : localMap.keySet()) {
if (!ValidationUtil.isEmpty(localMap.get(key))) {
params.put(key, localMap.get(key)[0]);
}
}
}
return params;
}
@Override @Override
public String getGroupCode() { public String getGroupCode() {
return null; return null;
...@@ -198,23 +180,28 @@ public class DutyCommonServiceImpl implements IDutyCommonService { ...@@ -198,23 +180,28 @@ public class DutyCommonServiceImpl implements IDutyCommonService {
@Override @Override
public void saveImportData(List<Map<String, Object>> dataList) { public void saveImportData(List<Map<String, Object>> dataList) {
List<DynamicFormInstance> formInstanceList = new ArrayList<>(); List<DynamicFormInstance> formInstanceList = new ArrayList<>();
List<DutyPersonShift> dutyPersonShifts = new ArrayList<>(); Set<DutyPersonShift> dutyPersonShifts = new HashSet<>();
dataList.forEach(d -> { dataList.forEach(d -> {
//TODO: 业务唯一索引,用户id //TODO: 业务唯一索引,用户id
String userId = d.get("userId").toString(); String userId = d.get("userId").toString();
List<DynamicFormInstance> instances = dynamicFormInstanceService.list(new LambdaQueryWrapper<DynamicFormInstance>() List<DynamicFormInstance> instances =
.eq(DynamicFormInstance::getFieldCode, userId) dynamicFormInstanceService.list(new LambdaQueryWrapper<DynamicFormInstance>()
.eq(DynamicFormInstance::getFieldCode, "userId")
.eq(DynamicFormInstance::getFieldValue, userId)
.eq(DynamicFormInstance::getGroupCode, this.getGroupCode())); .eq(DynamicFormInstance::getGroupCode, this.getGroupCode()));
Long instanceId = null; Long instanceId = null;
List<DynamicFormColumn> columns = dynamicFormColumnService.list(new LambdaQueryWrapper<DynamicFormColumn>().eq(DynamicFormColumn::getGroupCode, this.getGroupCode())); List<DynamicFormColumn> columns =
dynamicFormColumnService.list(new LambdaQueryWrapper<DynamicFormColumn>().eq(DynamicFormColumn::getGroupCode, this.getGroupCode()));
//1.组装动态表单数据 //1.组装动态表单数据
if (!instances.isEmpty()) { if (!instances.isEmpty()) {
//0.定位instanceId,准备进行更新操作 //0.定位instanceId,准备进行更新操作
instanceId = instances.get(0).getInstanceId(); instanceId = instances.get(0).getInstanceId();
//1.查询已有数据 //1.查询已有数据
List<DynamicFormInstance> instancesInDb = dynamicFormInstanceService.list(new LambdaQueryWrapper<DynamicFormInstance>().eq(DynamicFormInstance::getInstanceId, instanceId)); List<DynamicFormInstance> instancesInDb =
dynamicFormInstanceService.list(new LambdaQueryWrapper<DynamicFormInstance>().eq(DynamicFormInstance::getInstanceId, instanceId));
//2.list 转 map //2.list 转 map
Map<Object, DynamicFormInstance> instanceMap = Bean.listToMap(instancesInDb, "fieldCode", DynamicFormInstance.class); Map<Object, DynamicFormInstance> instanceMap = Bean.listToMap(instancesInDb, "fieldCode",
DynamicFormInstance.class);
//3.待更新数据组装,待批量入库 //3.待更新数据组装,待批量入库
this.updateFormValue(formInstanceList, d, instanceId, columns, instanceMap); this.updateFormValue(formInstanceList, d, instanceId, columns, instanceMap);
} else { } else {
...@@ -233,12 +220,20 @@ public class DutyCommonServiceImpl implements IDutyCommonService { ...@@ -233,12 +220,20 @@ public class DutyCommonServiceImpl implements IDutyCommonService {
//2.组装值班数据 //2.组装值班数据
List<DutyPersonShiftDto> shiftDtos = (List<DutyPersonShiftDto>) d.get("dutyShift"); List<DutyPersonShiftDto> shiftDtos = (List<DutyPersonShiftDto>) d.get("dutyShift");
Long finalInstanceId = instanceId; Long finalInstanceId = instanceId;
//按照业务唯一索引查询主键
List<DutyPersonShift> dutyPersonShiftsDb =
dutyPersonShiftService.list(new LambdaQueryWrapper<DutyPersonShift>().eq(DutyPersonShift::getInstanceId, instanceId));
Map<Date, Long> dutyPersonShiftMap =
dutyPersonShiftsDb.stream().collect(Collectors.toMap(DutyPersonShift::getDutyDate,
DutyPersonShift::getSequenceNbr));
//todo: 只更新当天及值班之后数据 //todo: 只更新当天及值班之后数据
Set<DutyPersonShift> needToDb = shiftDtos.stream().filter(s -> DateUtils.dateCompare(s.getDutyDate(), new Date()) >= 0).map(shiftDto -> { Set<DutyPersonShift> needToDb = shiftDtos.stream().filter(s -> DateUtils.dateCompare(s.getDutyDate(),
new Date()) >= 0).map(shiftDto -> {
DutyPersonShift dutyPersonShift = new DutyPersonShift(); DutyPersonShift dutyPersonShift = new DutyPersonShift();
Bean.copyExistPropertis(shiftDto, dutyPersonShift); Bean.copyExistPropertis(shiftDto, dutyPersonShift);
dutyPersonShift.setInstanceId(finalInstanceId); dutyPersonShift.setInstanceId(finalInstanceId);
dutyPersonShift.setAppKey(RequestContext.getAppKey()); dutyPersonShift.setAppKey(RequestContext.getAppKey());
dutyPersonShift.setSequenceNbr(dutyPersonShiftMap.get(dutyPersonShift.getDutyDate()));
return dutyPersonShift; return dutyPersonShift;
}).collect(Collectors.toSet()); }).collect(Collectors.toSet());
dutyPersonShifts.addAll(needToDb); dutyPersonShifts.addAll(needToDb);
...@@ -251,12 +246,14 @@ public class DutyCommonServiceImpl implements IDutyCommonService { ...@@ -251,12 +246,14 @@ public class DutyCommonServiceImpl implements IDutyCommonService {
} }
} }
public void updateFormValue(List<DynamicFormInstance> formInstanceList, Map<String, Object> d, Long instanceId, List<DynamicFormColumn> columns, Map<Object, DynamicFormInstance> instanceMap) { public void updateFormValue(List<DynamicFormInstance> formInstanceList, Map<String, Object> d, Long instanceId,
List<DynamicFormColumn> columns, Map<Object, DynamicFormInstance> instanceMap) {
for (DynamicFormColumn column : columns) { for (DynamicFormColumn column : columns) {
DynamicFormInstance formInstance = instanceMap.get(column.getFieldCode()); DynamicFormInstance formInstance = instanceMap.get(column.getFieldCode());
if (!ObjectUtils.isEmpty(formInstance)) { if (!ObjectUtils.isEmpty(formInstance)) {
//有的更新 //有的更新
formInstance.setFieldValue(d.get(column.getFieldCode()) != null ? d.get(column.getFieldCode()).toString() : ""); formInstance.setFieldValue(d.get(column.getFieldCode()) != null ?
d.get(column.getFieldCode()).toString() : "");
} else { } else {
//没有的新增 //没有的新增
formInstance = new DynamicFormInstance(); formInstance = new DynamicFormInstance();
...@@ -266,23 +263,27 @@ public class DutyCommonServiceImpl implements IDutyCommonService { ...@@ -266,23 +263,27 @@ public class DutyCommonServiceImpl implements IDutyCommonService {
} }
} }
private void buildFormInstanceData(Long instanceId, Map<String, Object> map, DynamicFormColumn column, DynamicFormInstance formInstance) { private void buildFormInstanceData(Long instanceId, Map<String, Object> map, DynamicFormColumn column,
DutyCarServiceImpl.fillFormInstanceData(instanceId, map, column, formInstance, sequence.nextId()); DynamicFormInstance formInstance) {
fillFormInstanceData(instanceId, map, column, formInstance, sequence.nextId());
} }
static void fillFormInstanceData(Long instanceId, Map<String, Object> map, DynamicFormColumn column, DynamicFormInstance formInstance, long l) { static void fillFormInstanceData(Long instanceId, Map<String, Object> map, DynamicFormColumn column,
DynamicFormInstance formInstance, long l) {
Bean.copyExistPropertis(column, formInstance); Bean.copyExistPropertis(column, formInstance);
formInstance.setAppKey(RequestContext.getAppKey()); formInstance.setAppKey(RequestContext.getAppKey());
formInstance.setInstanceId(instanceId); formInstance.setInstanceId(instanceId);
formInstance.setSequenceNbr(l); formInstance.setSequenceNbr(l);
formInstance.setFormColumnId(column.getSequenceNbr()); formInstance.setFormColumnId(column.getSequenceNbr());
formInstance.setFieldValue(map.get(column.getFieldCode()) != null ? map.get(column.getFieldCode()).toString() : ""); formInstance.setFieldValue(map.get(column.getFieldCode()) != null ?
map.get(column.getFieldCode()).toString() : "");
} }
@Override @Override
public Boolean deleteDutyData(Long instanceId) { public Boolean deleteDutyData(Long instanceId) {
dynamicFormInstanceService.remove(new LambdaQueryWrapper<DynamicFormInstance>().eq(DynamicFormInstance::getInstanceId, instanceId)); dynamicFormInstanceService.remove(new LambdaQueryWrapper<DynamicFormInstance>().eq(DynamicFormInstance::getInstanceId, instanceId));
dutyPersonShiftService.remove(new LambdaQueryWrapper<DutyPersonShift>().eq(DutyPersonShift::getInstanceId, instanceId)); dutyPersonShiftService.remove(new LambdaQueryWrapper<DutyPersonShift>().eq(DutyPersonShift::getInstanceId,
instanceId));
return true; return true;
} }
...@@ -290,11 +291,72 @@ public class DutyCommonServiceImpl implements IDutyCommonService { ...@@ -290,11 +291,72 @@ public class DutyCommonServiceImpl implements IDutyCommonService {
public List<Map<String, Object>> dayDutyPersonList(String dutyDay, Long shiftId, String postType) { public List<Map<String, Object>> dayDutyPersonList(String dutyDay, Long shiftId, String postType) {
String groupCode = this.getGroupCode(); String groupCode = this.getGroupCode();
Map<String, String> params = new HashMap<>(); Map<String, String> params = new HashMap<>();
params.put("postType",postType); params.put("postType", postType);
List<DynamicFormColumn> columns = dynamicFormColumnService.list(new LambdaQueryWrapper<DynamicFormColumn>().eq(DynamicFormColumn::getGroupCode, groupCode)); List<DynamicFormColumn> columns =
dynamicFormColumnService.list(new LambdaQueryWrapper<DynamicFormColumn>().eq(DynamicFormColumn::getGroupCode, groupCode));
Map<String, Object> fieldCodes = Bean.listToMap(columns, "fieldCode", "queryStrategy", DynamicFormColumn.class); Map<String, Object> fieldCodes = Bean.listToMap(columns, "fieldCode", "queryStrategy", DynamicFormColumn.class);
return dynamicFormInstanceService.getBaseMapper().listOneDayDutyPerson(dutyDay, shiftId,fieldCodes,RequestContext.getAppKey(),groupCode, params); return dynamicFormInstanceService.getBaseMapper().listOneDayDutyPerson(dutyDay, shiftId, fieldCodes,
RequestContext.getAppKey(), groupCode, params);
} }
@Override
public List<Map<String, Object>> listOnDutyPerson(String appKey) {
String groupCode = this.getGroupCode();
// 获取当前班次列表
DateTime now = new DateTime();
List<Long> shiftIdList = getOnDuty(now, appKey);
String shiftIds = StringUtils.join(shiftIdList.toArray(), ",");
String dutyDay = now.toString("yyyy-MM-dd");
// 获取当前值班人员
List<DynamicFormColumn> columns =
dynamicFormColumnService.list(new LambdaQueryWrapper<DynamicFormColumn>().eq(DynamicFormColumn::getGroupCode, groupCode));
Map<String, Object> fieldCodes = Bean.listToMap(columns, "fieldCode", "queryStrategy", DynamicFormColumn.class);
List<Map<String, Object>> maps = dynamicFormInstanceService.getBaseMapper().listOnDutyPerson(dutyDay,
shiftIds, fieldCodes, RequestContext.getAppKey(), groupCode);
// 获取人员照片和电话
List<Long> ids = new ArrayList<>();
maps.forEach(item -> ids.add(Long.valueOf(String.valueOf(item.get("userId")))));
try {
List<Map<String, Object>> orgUsrList = orgUsrService.selectForShowByListId(ids);
maps.forEach(item -> {
String userId = String.valueOf(item.get("userId"));
for (Map<String, Object> usr : orgUsrList) {
if (userId.equals(String.valueOf(usr.get("sequenceNbr")))) {
item.put("personImg", usr.get("personImg"));
item.put("telephone", usr.get("telephone"));
break;
}
}
});
} catch (Exception e) {
e.printStackTrace();
}
return maps;
}
private List<Long> getOnDuty(DateTime now, String appKey) {
List<DutyShiftDto> dutyShiftDtos = dutyShiftService.queryForDutyShiftList(appKey, false);
List<Long> shiftIds = new ArrayList<>();
int hour = now.getHourOfDay();
int minute = now.getMinuteOfHour();
dutyShiftDtos.forEach(item -> {
String[] start = item.getStartTime().split(": ");
String[] startTime = start[1].split(":");
Integer startHour = Integer.valueOf(startTime[0]);
Integer startMinute = Integer.valueOf(startTime[1]);
String[] end = item.getEndTime().split(": ");
String[] endTime = end[1].split(":");
Integer endHour = Integer.valueOf(endTime[0]);
Integer endMinute = Integer.valueOf(endTime[1]);
if ("当日".equals(start[0])) {
if (hour > startHour || hour == startHour && minute > startMinute) {
if ("次日".equals(end[0]) || "当日".equals(end[0]) && (hour < endHour || hour == endHour && minute < endMinute)) {
shiftIds.add(item.getSequenceNbr());
}
}
}
});
return shiftIds;
}
} }
...@@ -29,24 +29,15 @@ public class DutyPersonServiceImpl extends DutyCommonServiceImpl implements IDut ...@@ -29,24 +29,15 @@ public class DutyPersonServiceImpl extends DutyCommonServiceImpl implements IDut
} }
@Override @Override
public DutyPersonDto save(DutyPersonDto dutyCarDto) { public DutyPersonDto save(DutyPersonDto dutyPersonDto) {
//1.保存行数据 //1.保存行数据
String groupCode = this.getGroupCode(); String groupCode = this.getGroupCode();
List<DynamicFormColumn> columns = dynamicFormColumnService.list(new LambdaQueryWrapper<DynamicFormColumn>().eq(DynamicFormColumn::getGroupCode, groupCode)); Map<String, Object> map = Bean.BeantoMap(dutyPersonDto);
Map<String, Object> map = Bean.BeantoMap(dutyCarDto); Long instanceId = dynamicFormInstanceService.commonSave(groupCode,map);
Long instanceId = sequence.nextId();
List<DynamicFormInstance> instances = columns.stream().map(column -> {
DynamicFormInstance instance = new DynamicFormInstance();
buildFormInstanceData(instanceId, map, column, instance);
return instance;
}).collect(Collectors.toList());
if (!instances.isEmpty()) {
dynamicFormInstanceService.saveBatch(instances);
}
//2.保存值班信息 //2.保存值班信息
insertPersonShift(instanceId, dutyCarDto); insertPersonShift(instanceId, dutyPersonDto);
//3.返回保存后的数据 //3.返回保存后的数据
return dutyCarDto; return dutyPersonDto;
} }
@Override @Override
......
package com.yeejoin.amos.boot.module.common.biz.service.impl; package com.yeejoin.amos.boot.module.common.biz.service.impl;
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.toolkit.Sequence;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.common.api.dto.DynamicFormInstanceDto; import com.yeejoin.amos.boot.module.common.api.dto.DynamicFormInstanceDto;
import com.yeejoin.amos.boot.module.common.api.entity.DynamicFormColumn;
import com.yeejoin.amos.boot.module.common.api.entity.DynamicFormInstance; import com.yeejoin.amos.boot.module.common.api.entity.DynamicFormInstance;
import com.yeejoin.amos.boot.module.common.api.mapper.DynamicFormInstanceMapper; import com.yeejoin.amos.boot.module.common.api.mapper.DynamicFormInstanceMapper;
import com.yeejoin.amos.boot.module.common.api.service.IDynamicFormInstanceService; import com.yeejoin.amos.boot.module.common.api.service.IDynamicFormInstanceService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService; import org.typroject.tyboot.core.rdbms.service.BaseService;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* 动态表单实例表服务实现类 * 动态表单实例表服务实现类
...@@ -22,7 +34,13 @@ import java.util.Map; ...@@ -22,7 +34,13 @@ import java.util.Map;
public class DynamicFormInstanceServiceImpl extends BaseService<DynamicFormInstanceDto, DynamicFormInstance, DynamicFormInstanceMapper> implements IDynamicFormInstanceService { public class DynamicFormInstanceServiceImpl extends BaseService<DynamicFormInstanceDto, DynamicFormInstance, DynamicFormInstanceMapper> implements IDynamicFormInstanceService {
@Autowired @Autowired
private DynamicFormInstanceMapper dynamicFormInstanceMapper; Sequence sequence;
@Autowired
DynamicFormColumnServiceImpl dynamicFormColumnService;
@Autowired
HttpServletRequest request;
/** /**
* 分页查询 * 分页查询
...@@ -44,7 +62,96 @@ public class DynamicFormInstanceServiceImpl extends BaseService<DynamicFormInsta ...@@ -44,7 +62,96 @@ public class DynamicFormInstanceServiceImpl extends BaseService<DynamicFormInsta
} }
public List<DynamicFormInstanceDto> listByCalledId(Long instanceId) { public List<DynamicFormInstanceDto> listByCalledId(Long instanceId) {
return dynamicFormInstanceMapper.selectListByCalledId(instanceId); return this.baseMapper.selectListByCalledId(instanceId);
}
public Long commonSave(String groupCode, Map<String,Object> model){
Long instanceId = sequence.nextId();
List<DynamicFormColumn> columns = dynamicFormColumnService.list(new LambdaQueryWrapper<DynamicFormColumn>().eq(DynamicFormColumn::getGroupCode, groupCode));
List<DynamicFormInstance> instances = columns.stream().map(column -> {
DynamicFormInstance instance = new DynamicFormInstance();
buildFormInstanceData(instanceId, model, column, instance);
return instance;
}).collect(Collectors.toList());
if (!instances.isEmpty()) {
this.saveBatch(instances);
}
model.put("instanceId",instanceId);
model.put("groupCode",groupCode);
return instanceId;
}
private void buildFormInstanceData(Long instanceId, Map<String, Object> map, DynamicFormColumn column, DynamicFormInstance formInstance) {
fillFormInstanceData(instanceId, map, column, formInstance, sequence.nextId());
}
private void fillFormInstanceData(Long instanceId, Map<String, Object> map, DynamicFormColumn column, DynamicFormInstance formInstance, long l) {
Bean.copyExistPropertis(column, formInstance);
formInstance.setAppKey(RequestContext.getAppKey());
formInstance.setInstanceId(instanceId);
formInstance.setSequenceNbr(l);
formInstance.setFormColumnId(column.getSequenceNbr());
formInstance.setFieldValue(map.get(column.getFieldCode()) != null ? map.get(column.getFieldCode()).toString() : "");
}
public Map<String, Object> getOneMap(Long instanceId,String groupCode) {
Map<String, Object> optionListMap = new HashMap<>();
List<DynamicFormInstance> list = this.queryByInstanceId(instanceId);
if (!CollectionUtils.isEmpty(list)) {
List<DynamicFormColumn> columns = dynamicFormColumnService.list(new LambdaQueryWrapper<DynamicFormColumn>().eq(DynamicFormColumn::getGroupCode, groupCode));
Map<String, Object> instanceMap = Bean.listToMap(list, "fieldCode", "fieldValue", DynamicFormInstance.class);
for (DynamicFormColumn optionModel : columns) {
instanceMap.put(optionModel.getFieldCode(), instanceMap.get(optionModel.getFieldCode()));
}
optionListMap.putAll(instanceMap);
optionListMap.put("instanceId", instanceId);
optionListMap.put("createTime", list.iterator().next().getRecDate());
optionListMap.put("groupCode", groupCode);
}
return optionListMap;
} }
private List<DynamicFormInstance> queryByInstanceId(Long instanceId) {
LambdaQueryWrapper<DynamicFormInstance> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(DynamicFormInstance::getInstanceId, instanceId);
return this.baseMapper.selectList(wrapper);
}
public IPage<Map<String, Object>> pageList(int current, int size ,String groupCode){
Map<String, String> params = this.getRequestParamMap();
List<DynamicFormColumn> columns = dynamicFormColumnService.list(new LambdaQueryWrapper<DynamicFormColumn>().eq(DynamicFormColumn::getGroupCode, groupCode));
Map<String, Object> fieldCodes = Bean.listToMap(columns, "fieldCode", "queryStrategy", DynamicFormColumn.class);
Page page = new Page(current, size);
return this.getBaseMapper().pageList(page, RequestContext.getAppKey(), fieldCodes, groupCode, params);
}
public List<Map<String, Object>> listAll(String groupCode){
Map<String, String> params = this.getRequestParamMap();
List<DynamicFormColumn> columns = dynamicFormColumnService.list(new LambdaQueryWrapper<DynamicFormColumn>().eq(DynamicFormColumn::getGroupCode, groupCode));
Map<String, Object> fieldCodes = Bean.listToMap(columns, "fieldCode", "queryStrategy", DynamicFormColumn.class);
return this.getBaseMapper().listAll(RequestContext.getAppKey(), fieldCodes, groupCode, params);
}
private Map<String, String> getRequestParamMap() {
Map<String, String[]> parameterMap = request.getParameterMap();
Map<String, String[]> localMap = new HashMap<>();
localMap.putAll(parameterMap);
localMap.remove("current");
localMap.remove("size");
localMap.remove("beginDate");
localMap.remove("endDate");
Map<String, String> params = new HashMap<>();
if (!ValidationUtil.isEmpty(localMap)) {
for (String key : localMap.keySet()) {
if (!ValidationUtil.isEmpty(localMap.get(key))) {
params.put(key, localMap.get(key)[0]);
}
}
}
return params;
}
} }
...@@ -4,6 +4,7 @@ import java.lang.reflect.Field; ...@@ -4,6 +4,7 @@ import java.lang.reflect.Field;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
...@@ -21,6 +22,7 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -21,6 +22,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.typroject.tyboot.core.foundation.enumeration.UserType; import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.foundation.utils.CommonUtil;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil; import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.restful.doc.TycloudOperation; import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest; import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
...@@ -292,4 +294,17 @@ public class AlertCalledController extends BaseController { ...@@ -292,4 +294,17 @@ public class AlertCalledController extends BaseController {
}); });
return queryWrapper; return queryWrapper;
} }
/**
* 查询指定日期内警情列表
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/dateRange/list")
@ApiOperation(httpMethod = "GET", value = "查询指定日期内警情列表", notes = "查询指定日期内警情列表")
public ResponseModel<Map<String, Object>> listByDateRange(@RequestParam("beginDate") String beginDate,
@RequestParam("endDate") String endDate) {
return ResponseHelper.buildResponse(iAlertCalledService.getAlertInfoList(beginDate, endDate));
}
} }
\ No newline at end of file
...@@ -4,15 +4,11 @@ import java.util.Arrays; ...@@ -4,15 +4,11 @@ import java.util.Arrays;
import com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferSimpleDto; import com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferSimpleDto;
import com.yeejoin.amos.boot.module.jcs.api.feign.EquipFeignClient; import com.yeejoin.amos.boot.module.jcs.api.feign.EquipFeignClient;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PathVariable;
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.RestController;
import org.typroject.tyboot.core.foundation.enumeration.UserType; import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation; import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper; import org.typroject.tyboot.core.restful.utils.ResponseHelper;
...@@ -157,7 +153,8 @@ public class PowerTransferController extends BaseController { ...@@ -157,7 +153,8 @@ public class PowerTransferController extends BaseController {
@RequestMapping(value = "/list/{alert_called_id}", method = RequestMethod.GET) @RequestMapping(value = "/list/{alert_called_id}", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "根据警情id获取力量调派列表", notes = "根据警情id获取力量调派列表") @ApiOperation(httpMethod = "GET", value = "根据警情id获取力量调派列表", notes = "根据警情id获取力量调派列表")
public ResponseModel<PowerTransferSimpleDto> list(@PathVariable String alert_called_id) { public ResponseModel<PowerTransferSimpleDto> list(@PathVariable String alert_called_id) {
PowerTransferSimpleDto powerTransferSimpleDto = powerTransferService.getPowerTransferList(Long.parseLong(alert_called_id)); PowerTransferSimpleDto powerTransferSimpleDto =
powerTransferService.getPowerTransferList(Long.parseLong(alert_called_id));
return ResponseHelper.buildResponse(powerTransferSimpleDto); return ResponseHelper.buildResponse(powerTransferSimpleDto);
} }
...@@ -187,5 +184,15 @@ public class PowerTransferController extends BaseController { ...@@ -187,5 +184,15 @@ public class PowerTransferController extends BaseController {
public ResponseModel<Object> getPowerTree() { public ResponseModel<Object> getPowerTree() {
return ResponseHelper.buildResponse(powerTransferService.getPowerTree()); return ResponseHelper.buildResponse(powerTransferService.getPowerTree());
} }
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/power/list")
@ApiOperation(value = "力量出动列表", notes = "力量调派资源树")
public ResponseModel<Object> getPowerTransferList(@ApiParam(value = "开始日期", required = true) @RequestParam String beginDate,
@ApiParam(value = "结束日期", required = true) @RequestParam String endDate) {
return ResponseHelper.buildResponse(powerTransferService.getPowerTransferList(beginDate, endDate));
}
} }
package com.yeejoin.amos.boot.module.jcs.biz.controller;
import com.itextpdf.text.DocumentException;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.jcs.api.dto.ShiftChangeInfoDto;
import com.yeejoin.amos.boot.module.jcs.api.service.IShiftChangeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.foundation.utils.Bean;
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.HttpServletResponse;
import java.io.IOException;
/**
* 交接班记录表
*
* @author system_generator
* @date 2021-07-13
*/
@RestController
@Api(tags = "交接班模块Api")
@RequestMapping(value = "/shift-change")
public class ShiftChangeController extends BaseController {
@Autowired
IShiftChangeService iShiftChangeService;
/**
* 新增交接班记录表
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/save")
@ApiOperation(httpMethod = "POST", value = "新增交接班记录表", notes = "新增交接班记录表")
public ResponseModel save(@RequestBody ShiftChangeInfoDto model) {
return ResponseHelper.buildResponse(iShiftChangeService.createFormAndEntry(Bean.BeantoMap(model)));
}
/**
* 根据sequenceNbr删除
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@DeleteMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除交接班记录表", notes = "根据sequenceNbr删除交接班记录表")
public ResponseModel<Boolean> deleteBySequenceNbr(@PathVariable(value = "sequenceNbr") Long sequenceNbr) {
return ResponseHelper.buildResponse(iShiftChangeService.removeOneById(sequenceNbr));
}
/**
* 根据sequenceNbr查询
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "GET", value = "根据sequenceNbr查询单个交接班记录", notes = "根据sequenceNbr查询单个交接班记录")
public ResponseModel selectOne(@PathVariable Long sequenceNbr) {
return ResponseHelper.buildResponse(iShiftChangeService.getOneBySeq(sequenceNbr));
}
/**
* 列表分页查询
*
* @param current 当前页
* @param current 每页大小
* @return ResponseModel
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/page")
@ApiOperation(httpMethod = "GET", value = "交接班记录分页查询", notes = "交接班记录分页查询")
public ResponseModel queryForPage(
@RequestParam(value = "current") int current,
@RequestParam(value = "size") int size) {
return ResponseHelper.buildResponse(iShiftChangeService.queryForShiftChangePage(current, size));
}
/**
* 列表全部数据查询
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "交接班记录列表查询-不分页", notes = "交接班记录列表数据查询-不分页")
@GetMapping(value = "/list")
public ResponseModel selectForList() {
return ResponseHelper.buildResponse(iShiftChangeService.queryForShiftChangeList());
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "pdf下载", notes = "pdf下载")
@GetMapping("/pdf/export")
public void exportPdf(HttpServletResponse response,@RequestParam Long shiftChangeId) {
try {
iShiftChangeService.exportPdfById(response, shiftChangeId);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("系统异常!");
}
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "上次最新记录", notes = "上次最新记录")
@GetMapping("/lastRecord")
public ResponseModel lastRecord(){
return ResponseHelper.buildResponse(iShiftChangeService.lastRecord());
}
}
package com.yeejoin.amos.boot.module.jcs.biz.service.impl; package com.yeejoin.amos.boot.module.jcs.biz.service.impl;
import java.util.Date; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
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.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.jcs.api.dto.AlertCalledDto; import com.yeejoin.amos.boot.module.jcs.api.dto.AlertCalledDto;
import com.yeejoin.amos.boot.module.jcs.api.dto.AlertCalledObjsDto; import com.yeejoin.amos.boot.module.jcs.api.dto.AlertCalledObjsDto;
import com.yeejoin.amos.boot.module.jcs.api.entity.AlertCalled; import com.yeejoin.amos.boot.module.jcs.api.entity.AlertCalled;
import com.yeejoin.amos.boot.module.jcs.api.entity.AlertFormValue; import com.yeejoin.amos.boot.module.jcs.api.entity.AlertFormValue;
import com.yeejoin.amos.boot.module.jcs.api.entity.Template;
import com.yeejoin.amos.boot.module.jcs.api.enums.AlertStageEnums; import com.yeejoin.amos.boot.module.jcs.api.enums.AlertStageEnums;
import com.yeejoin.amos.boot.module.jcs.api.enums.DutyInfoEnum;
import com.yeejoin.amos.boot.module.jcs.api.mapper.AlertCalledMapper; import com.yeejoin.amos.boot.module.jcs.api.mapper.AlertCalledMapper;
import com.yeejoin.amos.boot.module.jcs.api.mapper.TemplateMapper;
import com.yeejoin.amos.boot.module.jcs.api.service.IAlertCalledService; import com.yeejoin.amos.boot.module.jcs.api.service.IAlertCalledService;
import com.yeejoin.amos.component.rule.config.RuleConfig;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.typroject.tyboot.component.emq.EmqKeeper;
import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/** /**
* 警情接警记录 服务实现类 * 警情接警记录 服务实现类
...@@ -49,17 +63,21 @@ public class AlertCalledServiceImpl extends BaseService<AlertCalledDto,AlertCall ...@@ -49,17 +63,21 @@ public class AlertCalledServiceImpl extends BaseService<AlertCalledDto,AlertCall
@Value("${mqtt.topic.command.alert.notice}") @Value("${mqtt.topic.command.alert.notice}")
private String topic; private String topic;
@Autowired
TemplateMapper templateMapper;
/** /**
* *
* <pre> * <pre>
* 保存警情信息 * 保存警情信息
* </pre> * </pre>
* *
* @param alertCalledVo * @param alertCalledObjsDto
* @return * @return
*/ */
@Transactional @Transactional(rollbackFor = RuntimeException.class)
public AlertCalledObjsDto createAlertCalled(AlertCalledObjsDto alertCalledObjsDto) { public AlertCalledObjsDto createAlertCalled(AlertCalledObjsDto alertCalledObjsDto) {
try { try {
// 警情基本信息 // 警情基本信息
AlertCalled alertCalled = alertCalledObjsDto.getAlertCalled(); AlertCalled alertCalled = alertCalledObjsDto.getAlertCalled();
...@@ -127,46 +145,125 @@ public class AlertCalledServiceImpl extends BaseService<AlertCalledDto,AlertCall ...@@ -127,46 +145,125 @@ public class AlertCalledServiceImpl extends BaseService<AlertCalledDto,AlertCall
throw new RuntimeException("报送失败,系统异常!"); throw new RuntimeException("报送失败,系统异常!");
} }
} }
/* /**
* 根据id 修改警情 * 根据id 修改警情
* type:警情相关 操作类型 0警情续报 1非警情确认 2 警情结案 * type:警情相关 操作类型 0警情续报 1非警情确认 2 警情结案
* */ *
*/
@Override @Override
@Transactional @Transactional(rollbackFor = RuntimeException.class)
public boolean updateAlertCalled(Long id, String code) { public boolean updateAlertCalled(Long id, String code) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
try { try {
switch (code) { switch (code) {
case "314": case "314":
alertCalledMapper.update(null, new UpdateWrapper<AlertCalled>().eq("sequence_nbr", id) alertCalledMapper.update(null, new UpdateWrapper<AlertCalled>().eq("sequence_nbr", id)
.set("alert_status", 1).set("alert_stage", AlertStageEnums.ZBQJ.getValue()).set("alarm_type", AlertStageEnums.FJQ.getValue()).set("alarm_type_code", AlertStageEnums.FJQ.getCode()) ); .set("alert_status", 1).set("alert_stage", AlertStageEnums.ZBQJ.getValue()).set("alarm_type", AlertStageEnums.FJQ.getValue()).set("alarm_type_code", AlertStageEnums.FJQ.getCode()));
break; break;
case "315": case "315":
alertCalledMapper.update(null, new UpdateWrapper<AlertCalled>().eq("sequence_nbr", id) alertCalledMapper.update(null, new UpdateWrapper<AlertCalled>().eq("sequence_nbr", id)
.set("alert_status", 1).set("alert_stage", AlertStageEnums.CZJS.getValue()) ); .set("alert_status", 1).set("alert_stage", AlertStageEnums.CZJS.getValue()));
break; break;
default: default:
alertCalledMapper.update(null, new UpdateWrapper<AlertCalled>().eq("sequence_nbr", id) alertCalledMapper.update(null, new UpdateWrapper<AlertCalled>().eq("sequence_nbr", id)
.set("alert_stage", AlertStageEnums.CZGZ.getValue())); .set("alert_stage", AlertStageEnums.CZGZ.getValue()));
break; break;
} }
AlertCalled alertCalled =this.getById(id); AlertCalled alertCalled = this.getById(id);
//删除缓存 //删除缓存
redisUtils.del(RedisKey.ALERTCALLED_ID+id); redisUtils.del(RedisKey.ALERTCALLED_ID + id);
/** /**
* 同步更新存ES * 同步更新存ES
*/ */
eSAlertCalledService.saveAlertCalledToES(alertCalled); eSAlertCalledService.saveAlertCalledToES(alertCalled);
return true; return true;
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException("系统异常!"); throw new RuntimeException("系统异常!");
} }
} }
/**
* 根据时间区间查询警情列表信息
*
* @param beginDate 开始时间
* @param endDate 结束时间
*/
public List<Map<String, Object>> listByDateRange(String beginDate, String endDate) {
// 查询指定日期内的警情列表
List<AlertCalled> alertCalledList =
this.list(new LambdaQueryWrapper<AlertCalled>().between(AlertCalled::getCallTime, beginDate, endDate));
Map<String, String> queryParams = Maps.newHashMap();
queryParams.put("beginDate", beginDate);
queryParams.put("endDate", endDate);
List<Map<String, Object>> allList = Lists.newArrayList();
if (!ValidationUtil.isEmpty(alertCalledList)) {
Map<String, List<AlertCalled>> alertCalledMap =
alertCalledList.stream().collect(Collectors.groupingBy(AlertCalled::getAlertTypeCode));
Map<Long, AlertCalled> calledMap =
alertCalledList.stream().collect(Collectors.toMap(AlertCalled::getSequenceNbr, Function.identity()));
alertCalledMap.forEach((alert, list) -> {
allList.addAll(iAlertFormValueService.listAll(alert, queryParams));
});
allList.forEach(i -> {
AlertCalled alertCalled = calledMap.get(Long.parseLong(i.get("instanceId").toString()));
i.putAll(Bean.BeantoMap(alertCalled));
});
}
return allList;
}
public Map<String, Object> getAlertInfoList(String beginDate, String endDate) {
Map<String, Object> result = Maps.newHashMap();
List<Map<String, Object>> list = listByDateRange(beginDate, endDate);
// 获取接警情况模板
List<Template> templateList =
templateMapper.selectList(new LambdaQueryWrapper<Template>().eq(Template::getFormat, false).like(Template::getTypeCode,
DutyInfoEnum.接警情况.getKey() + "-"));
Map<String, Template> templateMap = templateList.stream().collect(Collectors.toMap(Template::getTypeCode,
Function.identity()));
List<String> contentList = Lists.newArrayList();
list.forEach(i -> {
String tempContent =
templateMap.get(DutyInfoEnum.接警情况.getKey() + "-" + i.get("alertTypeCode")).getContent();
contentList.add(replaceTemplate(tempContent, i));
});
Map<String, Integer> statusCountMap = alertCalledMapper.queryAlertStatusCount(beginDate, endDate);
Integer unFinishedCount =
this.count(new LambdaQueryWrapper<AlertCalled>().eq(AlertCalled::getAlertStatus, "0"));
result.put("alertInfoList", contentList);
result.putAll(statusCountMap);
result.put("unFinishedCount", unFinishedCount);
return result;
}
/**
* 替换模板
*
* @param tempContent 模板
* @param objMap 对象map
* @return
*/
private String replaceTemplate(String tempContent, Map<String, Object> objMap) {
int size = objMap.size();
String[] keys = objMap.keySet().toArray(new String[size]);
Object[] values = objMap.values().toArray(new Object[size]);
List<String> strList = Lists.newArrayList();
for (Object obj : values) {
if (!ValidationUtil.isEmpty(obj)) {
if (obj instanceof Date) {
obj = DateUtils.date2LongStr((Date) obj);
}
strList.add(obj.toString());
} else {
strList.add("");
}
}
return StringUtils.replaceEach(tempContent, keys, strList.toArray(new String[strList.size()]));
}
} }
package com.yeejoin.amos.boot.module.jcs.biz.service.impl; package com.yeejoin.amos.boot.module.jcs.biz.service.impl;
import java.util.List; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.google.common.collect.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import com.yeejoin.amos.boot.module.jcs.api.dto.AlertFormValueDto; import com.yeejoin.amos.boot.module.jcs.api.dto.AlertFormValueDto;
import com.yeejoin.amos.boot.module.jcs.api.entity.AlertForm;
import com.yeejoin.amos.boot.module.jcs.api.entity.AlertFormValue; import com.yeejoin.amos.boot.module.jcs.api.entity.AlertFormValue;
import com.yeejoin.amos.boot.module.jcs.api.mapper.AlertFormValueMapper; import com.yeejoin.amos.boot.module.jcs.api.mapper.AlertFormValueMapper;
import com.yeejoin.amos.boot.module.jcs.api.service.IAlertFormValueService; import com.yeejoin.amos.boot.module.jcs.api.service.IAlertFormValueService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import java.util.Collections;
import java.util.List;
import java.util.Map;
/** /**
...@@ -23,6 +28,9 @@ public class AlertFormValueServiceImpl extends BaseService<AlertFormValueDto,Al ...@@ -23,6 +28,9 @@ public class AlertFormValueServiceImpl extends BaseService<AlertFormValueDto,Al
@Autowired @Autowired
private AlertFormValueMapper alertFormValueMapper; private AlertFormValueMapper alertFormValueMapper;
@Autowired
private AlertFormServiceImpl alertFormService;
public List<AlertFormValueDto> queryByCalledId(Long alertCalledId) { public List<AlertFormValueDto> queryByCalledId(Long alertCalledId) {
return this.queryForList(null, false, alertCalledId); return this.queryForList(null, false, alertCalledId);
...@@ -32,4 +40,16 @@ public class AlertFormValueServiceImpl extends BaseService<AlertFormValueDto,Al ...@@ -32,4 +40,16 @@ public class AlertFormValueServiceImpl extends BaseService<AlertFormValueDto,Al
return alertFormValueMapper.selectListByCalledId(id); return alertFormValueMapper.selectListByCalledId(id);
} }
/**
* 根据动态表单分组类型查询改分组下所有数据实例
*
* @param groupCode
* @return List<Map <String, Object>>
*/
public List<Map<String, Object>> listAll(String groupCode, Map<String, String> queryParams) {
List<AlertForm> columns =
alertFormService.list(new LambdaQueryWrapper<AlertForm>().eq(AlertForm::getAlertTypeCode, groupCode));
List<String> fieldCodes = Lists.transform(columns, AlertForm::getFieldCode);
return this.baseMapper.listAll(fieldCodes, groupCode, queryParams);
}
} }
...@@ -392,7 +392,7 @@ public class AlertSubmittedServiceImpl extends BaseService<AlertSubmittedDto, Al ...@@ -392,7 +392,7 @@ public class AlertSubmittedServiceImpl extends BaseService<AlertSubmittedDto, Al
"JQBSLX")); "JQBSLX"));
for (DataDictionary dataDictionary : dataDictionaries) { for (DataDictionary dataDictionary : dataDictionaries) {
Template template = templateService.getOne(new QueryWrapper<Template>().eq("type_code", Template template = templateService.getOne(new QueryWrapper<Template>().eq("type_code",
dataDictionary.getCode())); dataDictionary.getCode()).eq("format", true));
List<PowerTransferCompanyDto> lastPowerTransferCompany; List<PowerTransferCompanyDto> lastPowerTransferCompany;
if ("警情续报".equals(template.getType()) && (lastPowerTransferCompany = if ("警情续报".equals(template.getType()) && (lastPowerTransferCompany =
powerTransferService.getLastPowerTransferCompany(alertCalledId)).size() > 0) { powerTransferService.getLastPowerTransferCompany(alertCalledId)).size() > 0) {
......
...@@ -6,6 +6,7 @@ import java.util.List; ...@@ -6,6 +6,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.yeejoin.amos.boot.module.jcs.api.enums.DutyInfoEnum;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
...@@ -126,7 +127,8 @@ public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, Powe ...@@ -126,7 +127,8 @@ public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, Powe
fireCarListMapList.stream().filter(car -> ObjectUtils.isNotEmpty(car.get("teamId"))).filter(car -> fireCarListMapList.stream().filter(car -> ObjectUtils.isNotEmpty(car.get("teamId"))).filter(car ->
FireCarStatusEnum.执勤.getCode().equals(car.get("carState")) //TODO 后续如果需要多个状态需要删掉这个过滤条件 FireCarStatusEnum.执勤.getCode().equals(car.get("carState")) //TODO 后续如果需要多个状态需要删掉这个过滤条件
|| FireCarStatusEnum.出动.getCode().equals(car.get("carState"))).forEach(car -> { || FireCarStatusEnum.出动.getCode().equals(car.get("carState"))).forEach(car -> {
FireBrigadeResourceDto fireCarDto = (FireBrigadeResourceDto) Bean.mapToBean(car, FireBrigadeResourceDto.class); FireBrigadeResourceDto fireCarDto = (FireBrigadeResourceDto) Bean.mapToBean(car,
FireBrigadeResourceDto.class);
// TODO 后期根据车物联状态来返回,现在为"在位=执勤","执勤=出动" // TODO 后期根据车物联状态来返回,现在为"在位=执勤","执勤=出动"
if (FireCarStatusEnum.执勤.getCode().equals(fireCarDto.getCarState())) { if (FireCarStatusEnum.执勤.getCode().equals(fireCarDto.getCarState())) {
fireCarDto.setCarStateDesc(FireCarStatusEnum.执勤.getName()); fireCarDto.setCarStateDesc(FireCarStatusEnum.执勤.getName());
...@@ -151,7 +153,8 @@ public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, Powe ...@@ -151,7 +153,8 @@ public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, Powe
FireBrigadeResourceDto fireCarResourceDto = new FireBrigadeResourceDto(); FireBrigadeResourceDto fireCarResourceDto = new FireBrigadeResourceDto();
List<FireBrigadeResourceDto> fireBrigadeResourceDtoList = List<FireBrigadeResourceDto> fireBrigadeResourceDtoList =
resultMap.get(brigade.getSequenceNbr().toString()); resultMap.get(brigade.getSequenceNbr().toString());
long onDutyCarCount = fireBrigadeResourceDtoList.stream().filter(car -> FireCarStatusEnum.执勤.getCode().equals(car.getCarState())).count(); long onDutyCarCount =
fireBrigadeResourceDtoList.stream().filter(car -> FireCarStatusEnum.执勤.getCode().equals(car.getCarState())).count();
long outCarCount = fireBrigadeResourceDtoList.size() - onDutyCarCount; long outCarCount = fireBrigadeResourceDtoList.size() - onDutyCarCount;
fireCarResourceDto.setId(brigade.getSequenceNbr().toString()); fireCarResourceDto.setId(brigade.getSequenceNbr().toString());
fireCarResourceDto.setType(FireBrigadeTypeEnum.专职消防队.getKey()); fireCarResourceDto.setType(FireBrigadeTypeEnum.专职消防队.getKey());
...@@ -270,4 +273,50 @@ public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, Powe ...@@ -270,4 +273,50 @@ public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, Powe
public List<String> queryTransferCarIdsByAlertCalledId(Long alertCalledId) { public List<String> queryTransferCarIdsByAlertCalledId(Long alertCalledId) {
return this.baseMapper.queryTransferCarIdsByAlertCalledId(alertCalledId); return this.baseMapper.queryTransferCarIdsByAlertCalledId(alertCalledId);
} }
public Map<String, Object> getPowerTransferList(String beginDate, String endDate) {
// 获取力量调派信息
List<PowerTransferDto> powerTransferInfo = this.baseMapper.getPowerTransferInfo(beginDate, endDate);
List<PowerTransferCompanyDto> powerTransferCompanyInfo =
this.baseMapper.getPowerTransferCompanyInfo(beginDate, endDate);
List<PowerTransferCompanyResourcesDto> powerTransferCompanyResourcesInfo =
this.baseMapper.getPowerTransferCompanyResourcesInfo(beginDate, endDate);
Map<String, Object> transferInfo = this.baseMapper.getPowerTransferInfoCount(beginDate, endDate);
// 获取力量出动模板
Template template = templateService.getOne(new QueryWrapper<Template>().eq("type_code",
DutyInfoEnum.力量出动.getKey()).eq("format", false));
String templateContent = template.getContent();
List<String> transferContent = new ArrayList<>();
powerTransferInfo.forEach(pt -> {
StringBuilder transferDetail = new StringBuilder();
Long powerTransferId = pt.getSequenceNbr();
String rescueGrid = pt.getRescueGrid();
powerTransferCompanyInfo.forEach(ptc -> {
if (powerTransferId.equals(ptc.getPowerTransferId())) {
transferDetail.append(ptc.getCompanyName());
if (!ptc.getIsDistributionAgencies()) {
Long powerTransferCompanyId = ptc.getSequenceNbr();
transferDetail.append("车辆车牌号");
powerTransferCompanyResourcesInfo.forEach(ptcr -> {
if (powerTransferCompanyId.equals(ptcr.getPowerTransferCompanyId())) {
transferDetail.append(ptcr.getResourcesNum()).append("、");
}
});
transferDetail.deleteCharAt(transferDetail.length() - 1);
}
transferDetail.append(";");
}
});
transferDetail.deleteCharAt(transferDetail.length() - 1);
String transferDetails = templateContent.replace("departmentName-type-resourcesNum",
transferDetail.toString()).replace("rescueGrid", rescueGrid == null ? "" : rescueGrid).replace(
"taskStatus", "");
transferContent.add(transferDetails);
});
transferInfo.put("transferContent", transferContent);
return transferInfo;
}
} }
package com.yeejoin.amos.boot.module.jcs.biz.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Sequence;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPTable;
import com.yeejoin.amos.boot.biz.common.utils.PdfUtils;
import com.yeejoin.amos.boot.module.common.api.entity.DynamicFormInstance;
import com.yeejoin.amos.boot.module.common.biz.service.impl.DynamicFormInstanceServiceImpl;
import com.yeejoin.amos.boot.module.jcs.api.dto.ShiftChangeDto;
import com.yeejoin.amos.boot.module.jcs.api.dto.ShiftChangeInfoDto;
import com.yeejoin.amos.boot.module.jcs.api.entity.ShiftChange;
import com.yeejoin.amos.boot.module.jcs.api.mapper.ShiftChangeMapper;
import com.yeejoin.amos.boot.module.jcs.api.service.IShiftChangeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* 交接班记录表服务实现类
*
* @author system_generator
* @date 2021-07-13
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class ShiftChangeServiceImpl extends BaseService<ShiftChangeDto, ShiftChange, ShiftChangeMapper> implements IShiftChangeService {
@Autowired
DynamicFormInstanceServiceImpl dynamicFormInstanceService;
@Autowired
Sequence sequence;
private final String GROUP_CODE = "shiftChanges";
@Override
public Map<String, Object> createFormAndEntry(Map<String, Object> model) {
Long instanceId = dynamicFormInstanceService.commonSave(GROUP_CODE, model);
ShiftChange shiftChange = (ShiftChange) Bean.mapToBean(model, ShiftChange.class);
shiftChange.setInstanceId(instanceId);
shiftChange.setDutyJson(shiftChange.getDutyJson() == null ? new JSONObject() : shiftChange.getDutyJson());
shiftChange.setPowerJson(shiftChange.getPowerJson() == null ? new JSONObject() : shiftChange.getPowerJson());
this.save(shiftChange);
return model;
}
@Override
public Boolean removeOneById(Long sequenceNbr) {
ShiftChangeDto shiftChange = this.queryBySeq(sequenceNbr);
if (shiftChange != null) {
dynamicFormInstanceService.remove(new LambdaQueryWrapper<DynamicFormInstance>().eq(DynamicFormInstance::getInstanceId, shiftChange.getInstanceId()));
this.removeById(sequenceNbr);
}
return null;
}
@Override
public Map<String, Object> getOneBySeq(Long sequenceNbr) {
ShiftChangeDto shiftChange = this.queryBySeq(sequenceNbr);
if (shiftChange == null) {
throw new BadRequest("指定数据不存在");
}
Map<String, Object> baseInfo = dynamicFormInstanceService.getOneMap(shiftChange.getInstanceId(), GROUP_CODE);
Map<String, Object> cxc = Bean.BeantoMap(shiftChange);
baseInfo.putAll(cxc);
return baseInfo;
}
@Override
public IPage<Map<String, Object>> queryForShiftChangePage(int current, int size) {
IPage<Map<String, Object>> page = dynamicFormInstanceService.pageList(current,size,GROUP_CODE);
List<ShiftChange> shiftChanges = this.list();
Map<Long,ShiftChange> shiftChangeMap = shiftChanges.stream().collect(Collectors.toMap(ShiftChange::getInstanceId, Function.identity()));
page.getRecords().forEach(r->{
//instanceId 必输 所以未进行 null判断
ShiftChange shiftChange = shiftChangeMap.get(Long.parseLong(r.get("instanceId").toString()));
r.putAll(Bean.BeantoMap(shiftChange));
});
return page;
}
@Override
public List<Map<String, Object>> queryForShiftChangeList() {
List<Map<String, Object>> list = dynamicFormInstanceService.listAll(GROUP_CODE);
List<ShiftChange> shiftChanges = this.list();
Map<Long,ShiftChange> shiftChangeMap = shiftChanges.stream().collect(Collectors.toMap(ShiftChange::getInstanceId, Function.identity()));
list.forEach(r -> {
//instanceId 必输 所以未进行 null判断
ShiftChange shiftChange = shiftChangeMap.get(Long.parseLong(r.get("instanceId").toString()));
r.putAll(Bean.BeantoMap(shiftChange));
});
return list;
}
@Override
public Map<String, Object> lastRecord() {
List<Map<String, Object>> list = dynamicFormInstanceService.listAll(GROUP_CODE);
list = list.stream().sorted(Comparator.comparing(e->e.get("instanceId"), Comparator.comparingLong(s -> -Long.parseLong(s.toString())))).collect(Collectors.toList());
Map<String, Object> map = new HashMap<>();
map = list.isEmpty() ? map : list.get(0);
return map;
}
@Override
public void exportPdfById(HttpServletResponse response, Long shiftChangeId) throws IOException, DocumentException {
// 告诉浏览器用什么软件可以打开此文件
response.setHeader("content-Type", "application/pdf");
response.setContentType("application/pdf;charset=UTF-8");
// 下载文件的默认名称
response.setHeader("Content-Disposition", "attachment;filename=交接班记录表.pdf");
// 创建document对象
Document document = PdfUtils.createFile(response);
// 获取pdf文件数据
ShiftChangeDto shiftChange = this.queryBySeq(shiftChangeId);
Map<String, Object> baseInfo = dynamicFormInstanceService.getOneMap(shiftChange.getInstanceId(), GROUP_CODE);
ShiftChangeInfoDto ShiftChangeInfoDto = (ShiftChangeInfoDto) Bean.mapToBean(baseInfo, ShiftChangeInfoDto.class);
// 创建pdf格式
createPDFReport(document,ShiftChangeInfoDto,shiftChange);
}
public void createPDFReport(Document document,ShiftChangeInfoDto shiftChangeInfoDto,ShiftChangeDto shiftChange) throws IOException, DocumentException {
document.open();
// 基本样式参数
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Font cellContent = new Font(bfChinese, 11, Font.NORMAL);
Font cellTitle = new Font(bfChinese, 11, Font.BOLD);
Font title = new Font(bfChinese, 20, Font.BOLD);
int size = 35;
// 表头
Paragraph docTitle = new Paragraph("119接警坐席交接班记录\n", title);
docTitle.setAlignment(Element.ALIGN_CENTER);
// docTitle.setSpacingBefore(20);
// 表格内容
PdfPTable table1 = PdfUtils.createTable(8);
table1.setWidthPercentage(100);
table1.setSpacingBefore(10);
// 第一行
table1.addCell(PdfUtils.createCell("时间:", cellTitle,Element.ALIGN_CENTER,1,1,size));
table1.addCell(PdfUtils.createCell(shiftChange.getRecDate().toString(), cellContent,Element.ALIGN_CENTER,3,1,size));
table1.addCell(PdfUtils.createCell("值班领导:", cellTitle,Element.ALIGN_CENTER,1,1,size));
table1.addCell(PdfUtils.createCell(shiftChangeInfoDto.getJsDutyLeader(), cellContent,Element.ALIGN_CENTER,3,1,size));
// 第二行
table1.addCell(PdfUtils.createCell("值班员", cellTitle,Element.ALIGN_CENTER,1,3,size));
table1.addCell(PdfUtils.createCell("正班", cellTitle,Element.ALIGN_CENTER,1,1,size));
table1.addCell(PdfUtils.createCell(shiftChangeInfoDto.getDutyPersonOne(), cellContent,Element.ALIGN_CENTER,1,1,size));
table1.addCell(PdfUtils.createCell("值班开始时间", cellContent,Element.ALIGN_CENTER,1,1,size));
table1.addCell(PdfUtils.createCell("交接班时间", cellContent,Element.ALIGN_CENTER,1,1,size));
table1.addCell(PdfUtils.createCell("接班员", cellTitle,Element.ALIGN_CENTER,1,3,size));
table1.addCell(PdfUtils.createCell("正班", cellTitle,Element.ALIGN_CENTER,1,1,size));
table1.addCell(PdfUtils.createCell(shiftChangeInfoDto.getSucceedPersonOne(), cellContent,Element.ALIGN_CENTER,1,1,size));
// 第三行
table1.addCell(PdfUtils.createCell("副班", cellTitle,Element.ALIGN_CENTER,1,1,size));
table1.addCell(PdfUtils.createCell(shiftChangeInfoDto.getDutyPersonTwo(), cellContent,Element.ALIGN_CENTER,1,1,size));
table1.addCell(PdfUtils.createCell(shiftChangeInfoDto.getBeginDate(), cellContent,Element.ALIGN_CENTER,1,1,size));
table1.addCell(PdfUtils.createCell(shiftChangeInfoDto.getEndDate(), cellContent,Element.ALIGN_CENTER,1,1,size));
table1.addCell(PdfUtils.createCell("副班", cellTitle,Element.ALIGN_CENTER,1,1,size));
table1.addCell(PdfUtils.createCell(shiftChangeInfoDto.getSucceedPersonTwo(), cellContent,Element.ALIGN_CENTER,1,1,size));
// 第四行
table1.addCell(PdfUtils.createCell("经理", cellTitle,Element.ALIGN_CENTER,1,1,size));
table1.addCell(PdfUtils.createCell(shiftChangeInfoDto.getDutyPersonLeader(), cellContent,Element.ALIGN_CENTER,3,1,size));
table1.addCell(PdfUtils.createCell("经理", cellTitle,Element.ALIGN_CENTER,1,1,size));
table1.addCell(PdfUtils.createCell(shiftChangeInfoDto.getSucceedPersonLeader(), cellContent,Element.ALIGN_CENTER,1,1,size));
// 值班情况
table1.addCell(PdfUtils.createCell("值班情况", cellTitle,Element.ALIGN_LEFT,1,4,size));
table1.addCell(PdfUtils.createCell("接警情况:", cellContent,Element.ALIGN_LEFT,7,1,size));
table1.addCell(PdfUtils.createCell(shiftChange.getDutyJson().toString(), cellContent,Element.ALIGN_LEFT,7,1,120));
table1.addCell(PdfUtils.createCell("力量出动:", cellContent,Element.ALIGN_LEFT,7,1,size));
table1.addCell(PdfUtils.createCell(shiftChange.getPowerJson().toString(), cellContent,Element.ALIGN_LEFT,7,1,120));
// 移交事宜
table1.addCell(PdfUtils.createCell("移交事宜", cellTitle,Element.ALIGN_LEFT,1,1,size));
table1.addCell(PdfUtils.createCell(shiftChange.getRemark(), cellContent,Element.ALIGN_LEFT,7,1,120));
try{
document.add(docTitle);
document.add(table1);;
}catch (DocumentException E){
throw new RuntimeException("PDF写入文件报错");
}
document.close();
}
}
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