Commit 32058d9a authored by tangwei's avatar tangwei

解决冲突

parents cfd7de99 9679e4ca
......@@ -47,6 +47,18 @@
<artifactId>easypoi-annotation</artifactId>
<version>3.0.3</version>
</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>
</project>
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;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 值班人员日期关联关系表
*
* @author system_generator
* @date 2021-07-06
*/
* 值班人员日期关联关系表
*
* @author system_generator
* @date 2021-07-06
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="DutyPersonShiftDto", description="值班人员日期关联关系表")
@ApiModel(value = "DutyPersonShiftDto", description = "值班人员日期关联关系表")
public class DutyPersonShiftDto extends BaseDto {
private static final long serialVersionUID = 1L;
......@@ -39,4 +39,7 @@ public class DutyPersonShiftDto extends BaseDto {
@ApiModelProperty(value = "应用标识(数据隔离使用)")
private String appKey;
@ApiModelProperty(value = "颜色")
private String color;
}
......@@ -70,4 +70,20 @@ public interface DynamicFormInstanceMapper extends BaseMapper<DynamicFormInstanc
@Param("appKey") String appKey,
@Param("groupCode") String groupCode,
@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);
}
......@@ -2,8 +2,7 @@
<!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">
<select id="selectListByCalledId" resultType="com.yeejoin.amos.boot.module.common.api.dto.DynamicFormInstanceDto">
SELECT
v.sequence_nbr sequenceNbr,
SELECT v.sequence_nbr sequenceNbr,
v.form_column_id formColumnId,
v.instance_id instanceId,
v.group_code groupCode,
......@@ -17,10 +16,9 @@
v.is_delete isDelete,
v.block block,
f.field_type fieldType
FROM
cb_dynamic_form_instance v
FROM cb_dynamic_form_instance v
LEFT JOIN cb_dynamic_form_column f ON f.sequence_nbr = v.form_column_id
WHERE v.instance_id=#{id}
WHERE v.instance_id = #{id}
</select>
<select id="listAll" resultType="java.util.Map">
select
......@@ -134,4 +132,36 @@
</if>
order by instanceId desc
</select>
<select id="listOnDutyPerson" resultType="java.util.Map">
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>
......@@ -35,4 +35,7 @@ public class PowerTransferCompanyResourcesDto extends BaseDto {
@ApiModelProperty(value = "操作人名称")
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;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.boot.module.jcs.api.entity.AlertCalled;
import org.apache.ibatis.annotations.Param;
import java.util.Map;
/**
* 警情接警记录 Mapper 接口
......@@ -11,4 +14,5 @@ import com.yeejoin.amos.boot.module.jcs.api.entity.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;
import java.util.List;
import java.util.Map;
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.entity.AlertFormValue;
import org.apache.ibatis.annotations.Param;
/**
* Mapper 接口
......@@ -16,4 +18,17 @@ public interface AlertFormValueMapper extends BaseMapper<AlertFormValue> {
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;
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.PowerTransferCompanyResourcesDto;
import com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferDto;
import com.yeejoin.amos.boot.module.jcs.api.entity.PowerTransfer;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* 力量调派 Mapper 接口
......@@ -26,4 +28,35 @@ public interface PowerTransferMapper extends BaseMapper<PowerTransfer> {
* @return
*/
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 @@
<!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">
<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>
......@@ -22,4 +22,34 @@
LEFT JOIN jc_alert_form f ON f.sequence_nbr = v.alert_form_id
WHERE v.alert_called_id=#{id}
</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>
......@@ -36,13 +36,44 @@
having rec_date = (select rec_date from jc_power_transfer_company_resources order by rec_date desc limit 1)
</select>
<select id="queryTransferCarIdsByAlertCalledId" resultType="java.lang.String">
SELECT
ptcr.resources_id carId
FROM
`jc_power_transfer` pt
SELECT ptcr.resources_id carId
FROM `jc_power_transfer` pt
LEFT JOIN jc_power_transfer_company ptc ON ptc.power_transfer_id = pt.sequence_nbr
LEFT JOIN jc_power_transfer_company_resources ptcr ON ptcr.power_transfer_company_id = ptc.sequence_nbr
WHERE
pt.alert_called_id = #{alertCalledId}
WHERE pt.alert_called_id = #{alertCalledId}
</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>
<?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 {
@ApiParam(value = "岗位") @RequestParam(required = false) String 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;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.text.ParseException;
import java.util.List;
......@@ -111,6 +112,7 @@ public class DutyPersonController extends BaseController {
/**
* 值班数据删除
*
* @param instanceId 实例id
* @return ResponseModel
*/
......@@ -129,7 +131,8 @@ public class DutyPersonController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping("/exportExcel")
@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 {
return ResponseHelper.buildResponse(iDutyPersonService.downloadList(beginDate, endDate));
}
......@@ -137,9 +140,19 @@ public class DutyPersonController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation("查询指定日期值班人信息列表")
@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 = "岗位") @RequestParam(required = false) String 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 {
/**
* 删除值班数据
*
* @param instanceId 实例id
* @return Boolean
*/
......@@ -64,10 +65,18 @@ public interface IDutyCommonService {
/**
* 查询指定条件的值班人信息
*
* @param dutyDay 查询条件
* @param shiftId 班次
* @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
public DutyCarDto save(DutyCarDto dutyCarDto) {
//1.保存行数据
String groupCode = this.getGroupCode();
List<DynamicFormColumn> columns = dynamicFormColumnService.list(new LambdaQueryWrapper<DynamicFormColumn>().eq(DynamicFormColumn::getGroupCode, groupCode));
Map<String, Object> map = Bean.BeantoMap(dutyCarDto);
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);
}
Long instanceId = dynamicFormInstanceService.commonSave(groupCode,map);
//2.保存值班信息
insertPersonShift(instanceId, dutyCarDto);
//3.返回保存后的数据
......
......@@ -4,31 +4,31 @@ import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.utils.DateUtils;
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.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.DutyShift;
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.enums.DutyViewTypeEnum;
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.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
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 javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
......@@ -56,6 +56,9 @@ public class DutyCommonServiceImpl implements IDutyCommonService {
@Autowired
DutyShiftServiceImpl dutyShiftService;
@Autowired
OrgUsrServiceImpl orgUsrService;
/**
* 每天单个班次执勤人数全部小于等于3人
*/
......@@ -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 {
//1.已column为准 进行返回
String groupCode = this.getGroupCode();
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);
IPage<Map<String, Object>> iPage = dynamicFormInstanceService.getBaseMapper().pageList(page, RequestContext.getAppKey(), fieldCodes, groupCode, params);
IPage<Map<String, Object>> iPage = dynamicFormInstanceService.pageList(current, size, groupCode);
for (Map<String, Object> m : iPage.getRecords()) {
this.fillDutyShiftData(beginDate, endDate, m);
}
......@@ -84,8 +83,10 @@ public class DutyCommonServiceImpl implements IDutyCommonService {
private void fillDutyShiftData(String beginDate, String endDate, Map<String, Object> m) throws ParseException {
String instanceId = m.get("instanceId").toString();
List<DutyShift> dutyShifts = dutyShiftService.list(new LambdaQueryWrapper<DutyShift>().eq(BaseEntity::getIsDelete, false).eq(DutyShift::getAppKey, RequestContext.getAppKey()));
Map<Long, String> keyNameMap = dutyShifts.stream().collect(Collectors.toMap(BaseEntity::getSequenceNbr, DutyShift::getName));
List<DutyShift> dutyShifts =
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>()
.eq(DutyPersonShift::getInstanceId, instanceId)
.ge(beginDate != null, DutyPersonShift::getDutyDate, beginDate)
......@@ -93,7 +94,9 @@ public class DutyCommonServiceImpl implements IDutyCommonService {
DutyPersonShiftDto dto = new DutyPersonShiftDto();
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;
}).collect(Collectors.toList());
m.put("dutyShift", personShiftList);
......@@ -128,7 +131,8 @@ public class DutyCommonServiceImpl implements IDutyCommonService {
}
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");
//计算天的最大班次数量,时间区间内
......@@ -144,10 +148,7 @@ public class DutyCommonServiceImpl implements IDutyCommonService {
public List<Map<String, Object>> list(String beginDate, String endDate) throws ParseException {
//1.已column为准 进行返回
String groupCode = this.getGroupCode();
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);
List<Map<String, Object>> list = dynamicFormInstanceService.getBaseMapper().listAll(RequestContext.getAppKey(), fieldCodes, groupCode, params);
List<Map<String, Object>> list = dynamicFormInstanceService.listAll(groupCode);
//2.组织值班数据
for (Map<String, Object> map : list) {
this.fillDutyShiftData(beginDate, endDate, map);
......@@ -155,25 +156,6 @@ public class DutyCommonServiceImpl implements IDutyCommonService {
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
public String getGroupCode() {
return null;
......@@ -198,23 +180,28 @@ public class DutyCommonServiceImpl implements IDutyCommonService {
@Override
public void saveImportData(List<Map<String, Object>> dataList) {
List<DynamicFormInstance> formInstanceList = new ArrayList<>();
List<DutyPersonShift> dutyPersonShifts = new ArrayList<>();
Set<DutyPersonShift> dutyPersonShifts = new HashSet<>();
dataList.forEach(d -> {
//TODO: 业务唯一索引,用户id
String userId = d.get("userId").toString();
List<DynamicFormInstance> instances = dynamicFormInstanceService.list(new LambdaQueryWrapper<DynamicFormInstance>()
.eq(DynamicFormInstance::getFieldCode, userId)
List<DynamicFormInstance> instances =
dynamicFormInstanceService.list(new LambdaQueryWrapper<DynamicFormInstance>()
.eq(DynamicFormInstance::getFieldCode, "userId")
.eq(DynamicFormInstance::getFieldValue, userId)
.eq(DynamicFormInstance::getGroupCode, this.getGroupCode()));
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.组装动态表单数据
if (!instances.isEmpty()) {
//0.定位instanceId,准备进行更新操作
instanceId = instances.get(0).getInstanceId();
//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
Map<Object, DynamicFormInstance> instanceMap = Bean.listToMap(instancesInDb, "fieldCode", DynamicFormInstance.class);
Map<Object, DynamicFormInstance> instanceMap = Bean.listToMap(instancesInDb, "fieldCode",
DynamicFormInstance.class);
//3.待更新数据组装,待批量入库
this.updateFormValue(formInstanceList, d, instanceId, columns, instanceMap);
} else {
......@@ -233,12 +220,20 @@ public class DutyCommonServiceImpl implements IDutyCommonService {
//2.组装值班数据
List<DutyPersonShiftDto> shiftDtos = (List<DutyPersonShiftDto>) d.get("dutyShift");
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: 只更新当天及值班之后数据
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();
Bean.copyExistPropertis(shiftDto, dutyPersonShift);
dutyPersonShift.setInstanceId(finalInstanceId);
dutyPersonShift.setAppKey(RequestContext.getAppKey());
dutyPersonShift.setSequenceNbr(dutyPersonShiftMap.get(dutyPersonShift.getDutyDate()));
return dutyPersonShift;
}).collect(Collectors.toSet());
dutyPersonShifts.addAll(needToDb);
......@@ -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) {
DynamicFormInstance formInstance = instanceMap.get(column.getFieldCode());
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 {
//没有的新增
formInstance = new DynamicFormInstance();
......@@ -266,23 +263,27 @@ public class DutyCommonServiceImpl implements IDutyCommonService {
}
}
private void buildFormInstanceData(Long instanceId, Map<String, Object> map, DynamicFormColumn column, DynamicFormInstance formInstance) {
DutyCarServiceImpl.fillFormInstanceData(instanceId, map, column, formInstance, sequence.nextId());
private void buildFormInstanceData(Long instanceId, Map<String, Object> map, DynamicFormColumn column,
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);
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() : "");
formInstance.setFieldValue(map.get(column.getFieldCode()) != null ?
map.get(column.getFieldCode()).toString() : "");
}
@Override
public Boolean deleteDutyData(Long 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;
}
......@@ -290,11 +291,72 @@ public class DutyCommonServiceImpl implements IDutyCommonService {
public List<Map<String, Object>> dayDutyPersonList(String dutyDay, Long shiftId, String postType) {
String groupCode = this.getGroupCode();
Map<String, String> params = new HashMap<>();
params.put("postType",postType);
List<DynamicFormColumn> columns = dynamicFormColumnService.list(new LambdaQueryWrapper<DynamicFormColumn>().eq(DynamicFormColumn::getGroupCode, groupCode));
params.put("postType", postType);
List<DynamicFormColumn> columns =
dynamicFormColumnService.list(new LambdaQueryWrapper<DynamicFormColumn>().eq(DynamicFormColumn::getGroupCode, groupCode));
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
}
@Override
public DutyPersonDto save(DutyPersonDto dutyCarDto) {
public DutyPersonDto save(DutyPersonDto dutyPersonDto) {
//1.保存行数据
String groupCode = this.getGroupCode();
List<DynamicFormColumn> columns = dynamicFormColumnService.list(new LambdaQueryWrapper<DynamicFormColumn>().eq(DynamicFormColumn::getGroupCode, groupCode));
Map<String, Object> map = Bean.BeantoMap(dutyCarDto);
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);
}
Map<String, Object> map = Bean.BeantoMap(dutyPersonDto);
Long instanceId = dynamicFormInstanceService.commonSave(groupCode,map);
//2.保存值班信息
insertPersonShift(instanceId, dutyCarDto);
insertPersonShift(instanceId, dutyPersonDto);
//3.返回保存后的数据
return dutyCarDto;
return dutyPersonDto;
}
@Override
......
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.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.mapper.DynamicFormInstanceMapper;
import com.yeejoin.amos.boot.module.common.api.service.IDynamicFormInstanceService;
import org.springframework.beans.factory.annotation.Autowired;
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 javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 动态表单实例表服务实现类
......@@ -22,7 +34,13 @@ import java.util.Map;
public class DynamicFormInstanceServiceImpl extends BaseService<DynamicFormInstanceDto, DynamicFormInstance, DynamicFormInstanceMapper> implements IDynamicFormInstanceService {
@Autowired
private DynamicFormInstanceMapper dynamicFormInstanceMapper;
Sequence sequence;
@Autowired
DynamicFormColumnServiceImpl dynamicFormColumnService;
@Autowired
HttpServletRequest request;
/**
* 分页查询
......@@ -44,7 +62,96 @@ public class DynamicFormInstanceServiceImpl extends BaseService<DynamicFormInsta
}
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;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
......@@ -21,6 +22,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.foundation.utils.CommonUtil;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
......@@ -292,4 +294,17 @@ public class AlertCalledController extends BaseController {
});
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;
import com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferSimpleDto;
import com.yeejoin.amos.boot.module.jcs.api.feign.EquipFeignClient;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.GetMapping;
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.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
......@@ -157,7 +153,8 @@ public class PowerTransferController extends BaseController {
@RequestMapping(value = "/list/{alert_called_id}", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "根据警情id获取力量调派列表", notes = "根据警情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);
}
......@@ -187,5 +184,15 @@ public class PowerTransferController extends BaseController {
public ResponseModel<Object> 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;
import java.util.Date;
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.query.LambdaQueryWrapper;
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.RedisUtils;
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.entity.AlertCalled;
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.DutyInfoEnum;
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.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,16 +63,20 @@ public class AlertCalledServiceImpl extends BaseService<AlertCalledDto,AlertCall
@Value("${mqtt.topic.command.alert.notice}")
private String topic;
@Autowired
TemplateMapper templateMapper;
/**
*
* <pre>
* 保存警情信息
* </pre>
*
* @param alertCalledVo
* @param alertCalledObjsDto
* @return
*/
@Transactional
@Transactional(rollbackFor = RuntimeException.class)
public AlertCalledObjsDto createAlertCalled(AlertCalledObjsDto alertCalledObjsDto) {
try {
// 警情基本信息
......@@ -129,23 +147,24 @@ public class AlertCalledServiceImpl extends BaseService<AlertCalledDto,AlertCall
}
/*
/**
* 根据id 修改警情
* type:警情相关 操作类型 0警情续报 1非警情确认 2 警情结案
* */
*
*/
@Override
@Transactional
@Transactional(rollbackFor = RuntimeException.class)
public boolean updateAlertCalled(Long id, String code) {
// TODO Auto-generated method stub
try {
switch (code) {
case "314":
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;
case "315":
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;
default:
alertCalledMapper.update(null, new UpdateWrapper<AlertCalled>().eq("sequence_nbr", id)
......@@ -154,9 +173,9 @@ public class AlertCalledServiceImpl extends BaseService<AlertCalledDto,AlertCall
break;
}
AlertCalled alertCalled =this.getById(id);
AlertCalled alertCalled = this.getById(id);
//删除缓存
redisUtils.del(RedisKey.ALERTCALLED_ID+id);
redisUtils.del(RedisKey.ALERTCALLED_ID + id);
/**
* 同步更新存ES
*/
......@@ -167,6 +186,84 @@ public class AlertCalledServiceImpl extends BaseService<AlertCalledDto,AlertCall
}
}
/**
* 根据时间区间查询警情列表信息
*
* @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;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.google.common.collect.Lists;
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.mapper.AlertFormValueMapper;
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;
/**
......@@ -24,6 +29,9 @@ public class AlertFormValueServiceImpl extends BaseService<AlertFormValueDto,Al
@Autowired
private AlertFormValueMapper alertFormValueMapper;
@Autowired
private AlertFormServiceImpl alertFormService;
public List<AlertFormValueDto> queryByCalledId(Long alertCalledId) {
return this.queryForList(null, false, alertCalledId);
}
......@@ -32,4 +40,16 @@ public class AlertFormValueServiceImpl extends BaseService<AlertFormValueDto,Al
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
"JQBSLX"));
for (DataDictionary dataDictionary : dataDictionaries) {
Template template = templateService.getOne(new QueryWrapper<Template>().eq("type_code",
dataDictionary.getCode()));
dataDictionary.getCode()).eq("format", true));
List<PowerTransferCompanyDto> lastPowerTransferCompany;
if ("警情续报".equals(template.getType()) && (lastPowerTransferCompany =
powerTransferService.getLastPowerTransferCompany(alertCalledId)).size() > 0) {
......
......@@ -6,6 +6,7 @@ import java.util.List;
import java.util.Map;
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.StringUtils;
import org.springframework.beans.BeanUtils;
......@@ -126,7 +127,8 @@ public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, Powe
fireCarListMapList.stream().filter(car -> ObjectUtils.isNotEmpty(car.get("teamId"))).filter(car ->
FireCarStatusEnum.执勤.getCode().equals(car.get("carState")) //TODO 后续如果需要多个状态需要删掉这个过滤条件
|| 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 后期根据车物联状态来返回,现在为"在位=执勤","执勤=出动"
if (FireCarStatusEnum.执勤.getCode().equals(fireCarDto.getCarState())) {
fireCarDto.setCarStateDesc(FireCarStatusEnum.执勤.getName());
......@@ -151,7 +153,8 @@ public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, Powe
FireBrigadeResourceDto fireCarResourceDto = new FireBrigadeResourceDto();
List<FireBrigadeResourceDto> fireBrigadeResourceDtoList =
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;
fireCarResourceDto.setId(brigade.getSequenceNbr().toString());
fireCarResourceDto.setType(FireBrigadeTypeEnum.专职消防队.getKey());
......@@ -270,4 +273,50 @@ public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, Powe
public List<String> queryTransferCarIdsByAlertCalledId(Long 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