Browse Source

sjj 功能更新与优化2

jyj_dev2
zhouhaibin 1 week ago
parent
commit
79e9e6e69d
  1. 4
      ruoyi-admin/src/main/resources/application-dev.yml
  2. 2
      ruoyi-admin/src/main/resources/application.yml
  3. 4
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualProductInfoController.java
  4. 1
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ContractualProductInfoBo.java
  5. 20
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/ContractualProductInfoMapper.java
  6. 2
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IContractualProductInfoService.java
  7. 37
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualProductInfoServiceImpl.java
  8. 80
      zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/ContractualProductInfoMapper.xml

4
ruoyi-admin/src/main/resources/application-dev.yml

@ -52,8 +52,8 @@ spring:
# url: jdbc:mysql://localhost:3306/jyjtable?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
# username: root
# password: root
# url: jdbc:mysql://10.1.21.250:3306/jyjtable?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
url: jdbc:mysql://218.0.1.42:53306/jyjtable?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
url: jdbc:mysql://10.1.21.250:3306/jyjtable?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
# url: jdbc:mysql://218.0.1.42:53306/jyjtable?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
# url: jdbc:mysql://10.1.21.251:3306/jyjtable?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
# url: jdbc:mysql://222.75.18.225:2881/jyjtable?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
username: root

2
ruoyi-admin/src/main/resources/application.yml

@ -71,7 +71,7 @@ spring:
basename: i18n/messages
profiles:
#@profiles.active@
active: test
active: dev
# 文件上传
servlet:
multipart:

4
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualProductInfoController.java

@ -122,7 +122,7 @@ public class ContractualProductInfoController extends BaseController {
* @param type 设备类型(终端服务器数据库)
*/
@GetMapping("/getProductStatistics")
public R<ProductStatisticsData> getProductStatistics(@RequestParam String type) {
return R.ok(contractualProductInfoService.getProductStatistics(type));
public R<ProductStatisticsData> getProductStatistics(ContractualProductInfoBo bo) {
return R.ok(contractualProductInfoService.getProductStatistics(bo));
}
}

1
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ContractualProductInfoBo.java

@ -72,6 +72,7 @@ public class ContractualProductInfoBo extends BaseEntity {
private String type;
public String unitName;
private String os;
private String purchaserName;
}

20
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/ContractualProductInfoMapper.java

@ -30,40 +30,40 @@ public interface ContractualProductInfoMapper extends BaseMapperPlus<Contractual
/**
* 查询产品统计信息按文档名称分组
*
* @param type 设备类型终端服务器等
* @param bo 设备类型终端服务器等
* @return 统计信息列表
*/
List<ContractualProductSummary> selectProductSummaryByDocumentName(@Param("type") String type);
List<ContractualProductSummary> selectProductSummaryByDocumentName(@Param("bo") ContractualProductInfoBo bo);
/**
* 根据类型查询供应商统计
*
* @param type 设备类型终端服务器数据库
* @param bo 设备类型终端服务器数据库
* @return 供应商统计列表
*/
List<Map<String, Object>> selectVendorStatistics(@Param("type") String type);
List<Map<String, Object>> selectVendorStatistics(@Param("bo") ContractualProductInfoBo bo);
/**
* 根据类型查询品牌型号统计
*
* @param type 设备类型终端服务器数据库
* @param bo 设备类型终端服务器数据库
* @return 品牌型号统计列表
*/
List<Map<String, Object>> selectModelStatistics(@Param("type") String type);
List<Map<String, Object>> selectModelStatistics(@Param("bo") ContractualProductInfoBo bo);
/**
* 根据类型查询CPU统计
*
* @param type 设备类型终端服务器数据库
* @param bo 设备类型终端服务器数据库
* @return CPU统计列表
*/
List<Map<String, Object>> selectCpuStatistics(@Param("type") String type);
List<Map<String, Object>> selectCpuStatistics(@Param("bo") ContractualProductInfoBo bo);
/**
* 根据类型查询操作系统统计
*
* @param type 设备类型终端服务器数据库
* @param bo 设备类型终端服务器数据库
* @return 操作系统统计列表
*/
List<Map<String, Object>> selectOsStatistics(@Param("type") String type);
List<Map<String, Object>> selectOsStatistics(@Param("bo") ContractualProductInfoBo bo);
}

2
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IContractualProductInfoService.java

@ -80,5 +80,5 @@ public interface IContractualProductInfoService {
* @param type 设备类型(终端服务器数据库)
* @return 产品统计数据
*/
ProductStatisticsData getProductStatistics(String type);
ProductStatisticsData getProductStatistics(ContractualProductInfoBo bo);
}

37
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualProductInfoServiceImpl.java

@ -147,7 +147,7 @@ public class ContractualProductInfoServiceImpl implements IContractualProductInf
@Override
public TableDataInfo<ContractualProductSummary> listContractualProductSummaryPage(ContractualProductInfoBo bo, PageQuery pageQuery) {
// 修改策略:先获取所有记录,按DocumentName分组后再分页
List<ContractualProductSummary> summaryList = baseMapper.selectProductSummaryByDocumentName(bo.getType());
List<ContractualProductSummary> summaryList = baseMapper.selectProductSummaryByDocumentName(bo);
return TableDataInfo.build(summaryList);
}
@ -158,52 +158,53 @@ public class ContractualProductInfoServiceImpl implements IContractualProductInf
* @return 产品统计数据
*/
@Override
public ProductStatisticsData getProductStatistics(String type) {
public ProductStatisticsData getProductStatistics(ContractualProductInfoBo bo) {
String type = bo.getType();
ProductStatisticsData statisticsData = new ProductStatisticsData();
// 获取供应商占比数据
List<Map<String, Object>> vendorStats = baseMapper.selectVendorStatistics(type);
List<Map<String, Object>> vendorStats = baseMapper.selectVendorStatistics(bo);
List<ProductStatisticsData.StatItem> vendors = convertToStatItems(vendorStats);
statisticsData.setVendors(vendors);
// 获取品牌型号占比数据
List<Map<String, Object>> modelStats = baseMapper.selectModelStatistics(type);
List<Map<String, Object>> modelStats = baseMapper.selectModelStatistics(bo);
List<ProductStatisticsData.StatItem> models = convertToStatItems(modelStats);
statisticsData.setModels(models);
// 对于数据库类型,只需要统计前两项
if (!"数据库".equals(type)) {
// 获取CPU品牌型号数据
List<Map<String, Object>> cpuStats = baseMapper.selectCpuStatistics(type);
List<Map<String, Object>> cpuStats = baseMapper.selectCpuStatistics(bo);
List<ProductStatisticsData.StatItem> cpus = convertToStatItems(cpuStats);
statisticsData.setCpus(cpus);
// 获取操作系统品牌版本数据
List<Map<String, Object>> osStats = baseMapper.selectOsStatistics(type);
List<Map<String, Object>> osStats = baseMapper.selectOsStatistics(bo);
List<ProductStatisticsData.StatItem> os = convertToStatItems(osStats);
statisticsData.setOs(os);
}
return statisticsData;
}
/**
* 将Map列表转换为StatItem列表
*/
private List<ProductStatisticsData.StatItem> convertToStatItems(List<Map<String, Object>> mapList) {
List<ProductStatisticsData.StatItem> statItems = new ArrayList<>();
for (Map<String, Object> map : mapList) {
ProductStatisticsData.StatItem item = new ProductStatisticsData.StatItem();
// 名称可能为空,需要处理
String name = map.get("name") != null ? map.get("name").toString() : "未知";
item.setName(name);
// 数值转换,处理各种可能的数值类型
Object valueObj = map.get("value");
Integer value = 0;
if (valueObj != null) {
if (valueObj instanceof Number) {
value = ((Number) valueObj).intValue();
@ -215,11 +216,11 @@ public class ContractualProductInfoServiceImpl implements IContractualProductInf
}
}
}
item.setValue(value);
statItems.add(item);
}
return statItems;
}
}

80
zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/ContractualProductInfoMapper.xml

@ -47,6 +47,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="queryParam.unitPrice != null and queryParam.unitPrice != ''">
AND p.unit_price = #{queryParam.unitPrice}
</if>
<if test="queryParam.purchaserName != null and queryParam.purchaserName != ''">
AND i.purchaser_name = #{queryParam.purchaserName}
</if>
AND p.del_flag = '0'
</where>
ORDER BY
@ -58,11 +61,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
b.document_name AS countyName,
COUNT(DISTINCT dt.id) AS contractCount,
SUM(CASE
WHEN #{type} = '终端' THEN
WHEN #{bo.type} = '终端' THEN
CASE WHEN p.type IN ('台式计算机', '便携式计算机') THEN p.quantity ELSE 0 END
WHEN #{type} = '服务器' THEN
WHEN #{bo.type} = '服务器' THEN
CASE WHEN p.type = '服务器' THEN p.quantity ELSE 0 END
WHEN #{type} = '数据库' THEN
WHEN #{bo.type} = '数据库' THEN
CASE WHEN p.type = '数据库' THEN p.quantity ELSE 0 END
ELSE 0
END) AS deviceCount,
@ -73,13 +76,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
document_tasks dt ON b.id = dt.group_id
LEFT JOIN
contractual_product_info p ON dt.id = p.task_id
LEFT JOIN
contractual_info ci ON dt.id = ci.task_id
WHERE
b.parent_id IS NOT NULL
<if test="bo.purchaserName != null and bo.purchaserName != ''">
AND ci.purchaser_name = #{bo.purchaserName}
</if>
<if test="bo.fileName != null and bo.fileName != ''">
AND ci.file_name = #{bo.fileName}
</if>
AND dt.result_type = 'reviewSuccess' AND dt.del_flag = '0'
AND
CASE
WHEN #{type} = '终端' THEN p.type IN ('台式计算机', '便携式计算机')
WHEN #{type} = '服务器' THEN p.type = '服务器'
WHEN #{type} = '数据库' THEN p.type = '数据库'
WHEN #{bo.type} = '终端' THEN p.type IN ('台式计算机', '便携式计算机')
WHEN #{bo.type} = '服务器' THEN p.type = '服务器'
WHEN #{bo.type} = '数据库' THEN p.type = '数据库'
ELSE 1=1
END
GROUP BY
@ -93,17 +105,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
FROM
contractual_product_info p
INNER JOIN
document_tasks dt ON p.task_id = dt.id AND dt.progress_status = 'SUCCESS'
document_tasks dt ON p.task_id = dt.id AND dt.result_type = 'reviewSuccess'
INNER JOIN
contractual_info ci ON p.task_id = ci.task_id
WHERE
CASE
WHEN #{type} = '终端' THEN p.type IN ('台式计算机', '便携式计算机')
WHEN #{type} = '服务器' THEN p.type = '服务器'
WHEN #{type} = '数据库' THEN p.type = '数据库'
WHEN #{bo.type} = '终端' THEN p.type IN ('台式计算机', '便携式计算机')
WHEN #{bo.type} = '服务器' THEN p.type = '服务器'
WHEN #{bo.type} = '数据库' THEN p.type = '数据库'
ELSE 1=1
END
AND p.del_flag = '0'
<if test="bo.fileName != null and bo.fileName != ''">
AND ci.file_name = #{bo.fileName}
</if>
<if test="bo.purchaserName != null and bo.purchaserName != ''">
AND ci.purchaser_name = #{bo.purchaserName}
</if>
GROUP BY
ci.supplier_name
ORDER BY
@ -117,15 +135,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
FROM
contractual_product_info p
INNER JOIN
document_tasks dt ON p.task_id = dt.id AND dt.progress_status = 'SUCCESS'
document_tasks dt ON p.task_id = dt.id AND dt.result_type = 'reviewSuccess'
WHERE
CASE
WHEN #{type} = '终端' THEN p.type IN ('台式计算机', '便携式计算机')
WHEN #{type} = '服务器' THEN p.type = '服务器'
WHEN #{type} = '数据库' THEN p.type = '数据库'
WHEN #{bo.type} = '终端' THEN p.type IN ('台式计算机', '便携式计算机')
WHEN #{bo.type} = '服务器' THEN p.type = '服务器'
WHEN #{bo.type} = '数据库' THEN p.type = '数据库'
ELSE 1=1
END
AND p.del_flag = '0'
<if test="bo.fileName != null and bo.fileName != ''">
AND ci.file_name = #{bo.fileName}
</if>
<if test="bo.purchaserName != null and bo.purchaserName != ''">
AND ci.purchaser_name = #{bo.purchaserName}
</if>
GROUP BY
p.brand, p.version_str
ORDER BY
@ -139,17 +163,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
FROM
contractual_product_info p
INNER JOIN
document_tasks dt ON p.task_id = dt.id AND dt.progress_status = 'SUCCESS'
document_tasks dt ON p.task_id = dt.id AND dt.result_type = 'reviewSuccess'
WHERE
CASE
WHEN #{type} = '终端' THEN p.type IN ('台式计算机', '便携式计算机')
WHEN #{type} = '服务器' THEN p.type = '服务器'
WHEN #{type} = '数据库' THEN p.type = '数据库'
WHEN #{bo.type} = '终端' THEN p.type IN ('台式计算机', '便携式计算机')
WHEN #{bo.type} = '服务器' THEN p.type = '服务器'
WHEN #{bo.type} = '数据库' THEN p.type = '数据库'
ELSE 1=1
END
AND p.cpu_model IS NOT NULL
AND p.cpu_model != ''
AND p.del_flag = '0'
<if test="bo.fileName != null and bo.fileName != ''">
AND ci.file_name = #{bo.fileName}
</if>
<if test="bo.purchaserName != null and bo.purchaserName != ''">
AND ci.purchaser_name = #{bo.purchaserName}
</if>
GROUP BY
p.cpu_model
ORDER BY
@ -163,17 +193,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
FROM
contractual_product_info p
INNER JOIN
document_tasks dt ON p.task_id = dt.id AND dt.progress_status = 'SUCCESS'
document_tasks dt ON p.task_id = dt.id AND dt.result_type = 'reviewSuccess'
WHERE
CASE
WHEN #{type} = '终端' THEN p.type IN ('台式计算机', '便携式计算机')
WHEN #{type} = '服务器' THEN p.type = '服务器'
WHEN #{type} = '数据库' THEN p.type = '数据库'
WHEN #{bo.type} = '终端' THEN p.type IN ('台式计算机', '便携式计算机')
WHEN #{bo.type} = '服务器' THEN p.type = '服务器'
WHEN #{bo.type} = '数据库' THEN p.type = '数据库'
ELSE 1=1
END
AND p.os IS NOT NULL
AND p.os != ''
AND p.del_flag = '0'
<if test="bo.fileName != null and bo.fileName != ''">
AND ci.file_name = #{bo.fileName}
</if>
<if test="bo.purchaserName != null and bo.purchaserName != ''">
AND ci.purchaser_name = #{bo.purchaserName}
</if>
GROUP BY
p.os
ORDER BY

Loading…
Cancel
Save