Commit 7c715008 by jiangxuming

style(hmhj): 代码格式化调整

fix(hmhj): 修正SQL查询条件和日志记录问题
parent 453213d6
......@@ -24,7 +24,8 @@ public class UserStatsTask {
/**
* 每5分钟执行一次
*/
@Scheduled(cron = "0 */5 * * * ?")
// @Scheduled(cron = "0 */5 * * * ?")
@Scheduled(cron = "0 0 5 * * ?")
private void configureTasks() {
System.err.println("执行同步用户检测量定时任务时间: " + LocalDateTime.now());
userTestStatisticsService.updateUserStatisticsInfo();
......
......@@ -337,19 +337,20 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
EntrustSampleItemVO vo = unfinishItemList.get(0);
RestAssert.fail(String.format("样品编号【%s】的检测项目【%s】未填写检测值,无法提交!", vo.getSampleCode(), vo.getName()));
}
logger.info("3-1数据录入提交阶段耗时: {}", timeWatch.pointTime());
EntrustSampleItem sampleItem = new EntrustSampleItem();
sampleItem.setTestTime(new Date());
sampleItem.setStatus(EntrustSampleItemStatusEnum.END);
sampleItem.setProgress(EntrustSampleItemStatusEnum.END);
logger.info("3-2数据录入提交阶段耗时: {}", timeWatch.pointTime());
super.update(sampleItem, Condition.create().in("id", ids));
logger.info("3-3数据录入提交阶段耗时: {}", timeWatch.pointTime());
entrustSampleItemRecordService.record(ids, EntrustSampleItemStatusEnum.TEST.getDisplay(), EntrustSampleItemStatusEnum.END.getDisplay(), 0, "数据录入提交", account);
logger.info("4数据录入提交阶段耗时: {}", timeWatch.pointTime());
// 若存在委托下没有完成的检测项目,那么直接返回
unfinishItemList = baseMapper.selectUnfinishItemList(new QueryDTO().setEntrustId(entrustId).setNonIds(ids));//todo 性能优化
logger.info("5数据录入提交阶段耗时: {}", timeWatch.pointTime());
logger.info("unfinishItemList: {}", JacksonUtils.toJson(unfinishItemList));
if (CollectionUtils.isNotEmpty(unfinishItemList)) {
return true;
}
......
......@@ -131,9 +131,15 @@ public class OriginalRecordServiceImpl extends BaseServiceImpl<OriginalRecordMap
}
logger.info("7-3阶段耗时:{} ms", timeWatch.pointTime());
if (CollectionUtils.isNotEmpty(saveList)) {
logger.info("7-4阶段耗时:{} ms", timeWatch.pointTime());
pool.execute(() -> {
logger.info("7-5<UNK>{} ms", timeWatch.pointTime());
logger.info("ids: {}", ArrayUtils.toString(ids));
itemRelOriginalRecordService.remove(Condition.create().in(null != ids, "item_id", ids));
itemRelOriginalRecordService.saveBatch(saveList);
logger.info("7-6<UNK>{} ms", timeWatch.pointTime());
});
logger.info("7-7阶段耗时:{} ms", timeWatch.pointTime());
}
// if (CollectionUtils.isNotEmpty(saveList)) {
// itemRelOriginalRecordService.saveBatch(saveList);
......
package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.controller.LoginHelper;
......@@ -60,6 +62,9 @@ public class UserInfoServiceImpl {
@Resource
private RedisTemplate<String, String> redisTemplate;
private final Cache<String, List<SysOrg>> USER_PERIOD = Caffeine.newBuilder()
.expireAfterWrite(24, TimeUnit.HOURS).build();
public List<LmsUserGroup> getGroupList(Long userId) {
if (null == userId) {
return OTHER_GROUP_LIST;
......@@ -229,7 +234,15 @@ public class UserInfoServiceImpl {
}
public String getUserPeriod(Account account) {
List<SysOrg> orgList = sysOrgClient.getListByUserId(account.getUserId()).getData();
List<SysOrg> orgList = new ArrayList<>();
String key = "userPeriod#%s";
List<SysOrg> ifPresent = USER_PERIOD.getIfPresent(String.format(key, account.getUserId()));
if (CollectionUtils.isNotEmpty(ifPresent)) {
orgList = ifPresent;
} else {
orgList = sysOrgClient.getListByUserId(account.getUserId()).getData();
USER_PERIOD.put(String.format(key, account.getUserId()), orgList);
}
if (CollectionUtils.isEmpty(orgList)) {
return null;
}
......
......@@ -125,96 +125,107 @@
<select id="selectVOList" resultType="com.patzn.cloud.service.hmhj.vo.EntrustVO">
with sample as (
WITH sample AS (
SELECT
s.company_id,s.entrust_id,max(s.sample_from) "sample_from",
(case when count(1) = sum(s.send_erp) then 1 else 0 end ) "send_erp"
from entrust_sample s where s.deleted = 0
s.company_id,
s.entrust_id,
MAX(s.sample_from) AS "sample_from",
CASE WHEN COUNT(1) = SUM(s.send_erp) THEN 1 ELSE 0 END AS "send_erp"
FROM
entrust_sample s
WHERE
s.deleted = 0
<if test="null != vo.sampleCode">
and s.code like concat('%',#{vo.sampleCode},'%')
AND s.code LIKE CONCAT('%', #{vo.sampleCode}, '%')
</if>
<if test="null != vo.sampleName">
and s.name like concat('%',#{vo.sampleName},'%')
AND s.name LIKE CONCAT('%', #{vo.sampleName}, '%')
</if>
<if test="null != vo.sampleStatus">
and s.status = #{vo.sampleStatus}
AND s.status = #{vo.sampleStatus}
</if>
<if test="null != vo.judgeStatus">
and s.judge_status = #{vo.judgeStatus}
AND s.judge_status = #{vo.judgeStatus}
</if>
<if test="null == vo.sampleType">
and s.type = 0
AND s.type = 0
</if>
<if test="null != vo.sampleType">
and s.type = #{vo.sampleType}
AND s.type = #{vo.sampleType}
</if>
<if test="null != vo.judgeStatusList">
and s.judge_status IN
<foreach collection="vo.judgeStatusList" index="index" item="judgeStatus" open="(" separator="," close=")">
AND s.judge_status IN
<foreach collection="_judgeStatusList" index="index" item="judgeStatus" open="(" separator="," close=")">
#{judgeStatus}
</foreach>
</if>
<if test="null != vo.notSampleStatus">
and s.status != #{vo.notSampleStatus}
AND s.status != #{vo.notSampleStatus}
</if>
<if test="null != vo.itemStatus || null != vo.testerId">
AND exists (
select 1 from entrust_sample_item i where i.deleted = 0 and i.entrust_sample_id = s.id
AND EXISTS (
SELECT 1
FROM entrust_sample_item i
WHERE i.deleted = 0 AND i.entrust_sample_id = s.id
<if test="null != vo.itemStatus">
and i.status = #{vo.itemStatus}
AND i.status = #{vo.itemStatus}
</if>
<if test="null != vo.testerId">
and i.tester_id = #{vo.testerId}
AND i.tester_id = #{vo.testerId}
</if>
)
</if>
GROUP BY s.company_id,s.entrust_id
GROUP BY
s.company_id,
s.entrust_id
)
SELECT e.*,s.sample_from,r.report_send_time
FROM entrust e
JOIN sample s on s.entrust_id = e.id
LEFT JOIN entrust_report r on r.entrust_id = e.id and r.deleted = 0
WHERE e.deleted = 0
SELECT
e.*,
s.sample_from,
r.report_send_time
FROM
entrust e
JOIN
sample s ON s.entrust_id = e.id
LEFT JOIN
entrust_report r ON r.entrust_id = e.id AND r.deleted = 0
WHERE
e.deleted = 0
<include refid="basicCondition"/>
<if test="null != vo.userOrgName">
AND exists (
select 1
from entrust_sample es
join contract_sample cs on es.contract_sample_id = cs.id
where es.deleted = 0 and cs.deleted = 0
and strpos(#{vo.userOrgName},cs.factory_area) > 0
AND EXISTS (
SELECT 1
FROM entrust_sample es
JOIN contract_sample cs ON es.contract_sample_id = cs.id
WHERE es.deleted = 0 AND cs.deleted = 0
AND STRPOS(#{vo.userOrgName}, cs.factory_area) > 0
)
</if>
<if test="null != vo.reportStatus || null != vo.reportNotStatus || null != vo.reportStatusList">
AND exists (
select 1 from entrust_report r where r.deleted = 0 and r.entrust_id = e.id
AND EXISTS (
SELECT 1
FROM entrust_report r
WHERE r.deleted = 0 AND r.entrust_id = e.id
<if test="null != vo.reportStatus">
and r.status = #{vo.reportStatus}
AND r.status = #{vo.reportStatus}
</if>
<if test="null != vo.reportNotStatus">
and r.status != #{vo.reportNotStatus}
AND r.status != #{vo.reportNotStatus}
</if>
<if test="null != vo.reportStatusList">
and r.status IN
<foreach collection="vo.reportStatusList" index="index" item="reportStatus" open="(" separator=","
close=")">
AND r.status IN
<foreach collection="vo.reportStatusList" index="index" item="reportStatus" open="(" separator="," close=")">
#{reportStatus}
</foreach>
</if>
)
</if>
<if test="null == vo.sortOrder">
order by e.ctime DESC
ORDER BY e.ctime DESC
</if>
<if test="null != vo.sortOrder">
order by ${vo.sortOrder}
ORDER BY ${vo.sortOrder}
</if>
</select>
<!--查询委托历史数据-->
......
......@@ -46,7 +46,7 @@
i.name,
i.status,
i.standard,
i.test_value,
ii.test_value,
i.tester,
i.tester_id,
i.test_time,
......@@ -65,6 +65,7 @@
rr.record_id,
od.object_key "record_object_key"
from entrust_sample_item i
left join entrust_sample_item_index ii on ii.entrust_sample_item_id = i.id and ii.deleted = 0
join entrust_sample s on s.id = i.entrust_sample_id and s.deleted = 0
join entrust e on e.id = i.entrust_id and e.deleted = 0
left join item_rel_original_record rr on rr.item_id = i.id and rr.deleted = 0
......@@ -444,7 +445,11 @@
(case when count(1) = sum(CASE WHEN (ii.test_value IS NULL OR LENGTH(TRIM(ii.test_value)) = 0) THEN 0 ELSE 1
END) then 1 else 0 end) "END_INDEX"
FROM entrust_sample_item_index ii
JOIN entrust_sample_item si on si.id = ii.entrust_sample_item_id
WHERE ii.deleted = 0
<if test="null != vo.entrustId">
and si.entrust_id = #{vo.entrustId}
</if>
<if test="null != vo.ids">
and ii.entrust_sample_item_id in
<foreach collection="vo.ids" index="index" item="itemId" open="(" separator="," close=")">
......
......@@ -4,11 +4,13 @@
<select id="selectPageVO" resultType="com.patzn.cloud.service.hmhj.vo.OriginalRecordVO">
WITH target_items AS (
-- 预过滤entrust_sample_item关联数据
SELECT DISTINCT rr.record_id
FROM entrust_sample_item i
JOIN item_rel_original_record rr ON rr.item_id = i.id AND rr.deleted = 0
WHERE i.deleted = 0
<if test="vo.entrustId != null">
AND entrust_id = #{vo.entrustId}
</if>
<if test="vo.testerId != null">
AND i.tester_id = #{vo.testerId}
</if>
......@@ -17,16 +19,15 @@
</if>
),
filtered_records AS (
-- 预过滤original_record主表
SELECT id
FROM original_record
WHERE deleted = 0
<if test="vo.title != null">
AND title LIKE CONCAT('%', #{vo.title}, '%')
</if>
AND id IN (SELECT record_id FROM target_items) -- 关联预过滤结果
AND id IN (SELECT record_id FROM target_items)
<if test="vo.entrustId != null">
AND entrust_id = #{vo.entrustId} -- 直接过滤entrust_id
AND entrust_id = #{vo.entrustId}
</if>
)
SELECT
......@@ -52,10 +53,10 @@
JOIN entrust e ON e.deleted = 0
AND (
e.id = r.entrust_id
OR r.entrust_ids LIKE CONCAT('%', e.id, '%') -- 替换strpos为LIKE
OR r.entrust_ids LIKE CONCAT('%', e.id, '%')
)
<if test="vo.entrustId != null">
AND e.id = #{vo.entrustId} -- 二次确认entrust_id
AND e.id = #{vo.entrustId}
</if>
<if test="vo.entrustCode != null">
AND e.code LIKE CONCAT('%', #{vo.entrustCode}, '%')
......
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