Commit 7c715008 by jiangxuming

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

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