package jnpf.limsService.impl;
|
|
import jnpf.audit.sdk.annotation.AuditLog;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import jnpf.base.UserInfo;
|
import jnpf.limsEntity.LimsSxtKanbanItemVo;
|
import jnpf.limsEntity.LimsSxtKanbanOptionsVo;
|
import jnpf.limsEntity.LimsSxtKanbanRowVo;
|
import jnpf.limsEntity.LimsSxtQuyangJihuaRenwuEntity;
|
import jnpf.limsMapper.LimsSxtKanbanMapper;
|
import jnpf.limsMapper.LimsSxtQuyangJihuaRenwuMapper;
|
import jnpf.limsService.LimsSxtKanbanService;
|
import jnpf.limsService.LimsSxtQuyangJihuaRenwuService;
|
import jnpf.limsService.support.LimsSxtQuyangJihuaRenwuStatus;
|
import jnpf.util.UserProvider;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.StringUtils;
|
|
import java.time.LocalDate;
|
import java.time.ZoneId;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* 水系统计划看板行读取当前有效点位,日历项读取 Renwu 历史快照。
|
*/
|
@Service
|
public class LimsSxtKanbanServiceImpl implements LimsSxtKanbanService {
|
|
@Autowired
|
private LimsSxtKanbanMapper kanbanMapper;
|
@Autowired
|
private LimsSxtQuyangJihuaRenwuMapper renwuMapper;
|
@Autowired
|
private LimsSxtQuyangJihuaRenwuService renwuService;
|
|
@Override
|
public LimsSxtKanbanOptionsVo listKanbanOptions(String yangpinLeixing, String suoshuChejian,
|
String quyangDidian) {
|
String tenantId = dangqianZuhuId();
|
LimsSxtKanbanOptionsVo result = new LimsSxtKanbanOptionsVo();
|
result.setYangpinLeixingList(kanbanMapper.selectSampleTypes(tenantId));
|
if (!StringUtils.hasText(yangpinLeixing)) {
|
return result;
|
}
|
result.setChejianList(kanbanMapper.selectWorkshops(tenantId, yangpinLeixing));
|
if (!StringUtils.hasText(suoshuChejian)) {
|
return result;
|
}
|
result.setQuyangDidianList(kanbanMapper.selectPlaces(tenantId, yangpinLeixing, suoshuChejian));
|
if (!StringUtils.hasText(quyangDidian)) {
|
return result;
|
}
|
result.setQuyangdianList(kanbanMapper.selectPoints(
|
tenantId, yangpinLeixing, suoshuChejian, quyangDidian));
|
return result;
|
}
|
|
@Override
|
public List<LimsSxtKanbanRowVo> listKanbanRows(String yangpinLeixing, String suoshuChejian,
|
String quyangDidian, String quyangdianBianhao) {
|
return kanbanMapper.selectRows(dangqianZuhuId(), yangpinLeixing, suoshuChejian,
|
quyangDidian, quyangdianBianhao);
|
}
|
|
@Override
|
public List<LimsSxtKanbanItemVo> listKanbanItems(LocalDate kaishiRiqi, LocalDate jieshuRiqi,
|
String yangpinLeixing, String suoshuChejian,
|
String quyangDidian, String quyangdianBianhao) {
|
if (kaishiRiqi == null || jieshuRiqi == null || kaishiRiqi.isAfter(jieshuRiqi)) {
|
throw new jnpf.exception.DataException("日期范围不正确");
|
}
|
List<LimsSxtKanbanItemVo> result = new ArrayList<>();
|
for (LimsSxtQuyangJihuaRenwuEntity renwu : chaxunRenwu(
|
kaishiRiqi, jieshuRiqi, yangpinLeixing, suoshuChejian, quyangDidian, quyangdianBianhao)) {
|
result.add(toItem(renwu));
|
}
|
return result;
|
}
|
|
@Override
|
@AuditLog(action = "DELETE", label = "取消水系统未来计划任务", bizType = "SXT",
|
bizCodeExpr = "#renwuId", bizCodeRequired = false,
|
targetTable = "lims_sxt_quyang_jihua_renwu", targetIdExpr = "#renwuId",
|
diff = true, entityClass = LimsSxtQuyangJihuaRenwuEntity.class)
|
public void quxiaoWeilaiRenwu(String renwuId) {
|
renwuService.quxiaoWeishengchengWeilaiRenwu(renwuId, dangqianZuhuId(), "manual_cancelled");
|
}
|
|
private List<LimsSxtQuyangJihuaRenwuEntity> chaxunRenwu(LocalDate kaishiRiqi, LocalDate jieshuRiqi,
|
String yangpinLeixing, String suoshuChejian,
|
String quyangDidian, String quyangdianBianhao) {
|
QueryWrapper<LimsSxtQuyangJihuaRenwuEntity> query = new QueryWrapper<>();
|
query.eq("f_tenant_id", dangqianZuhuId()).eq("f_delete_mark", 0)
|
.ge(kaishiRiqi != null, "jihua_riqi", kaishiRiqi)
|
.le(jieshuRiqi != null, "jihua_riqi", jieshuRiqi)
|
.eq(StringUtils.hasText(yangpinLeixing), "yangpin_leixing", yangpinLeixing)
|
.eq(StringUtils.hasText(suoshuChejian), "suoshu_chejian_id", suoshuChejian)
|
.eq(StringUtils.hasText(quyangDidian), "quyang_didian", quyangDidian)
|
.eq(StringUtils.hasText(quyangdianBianhao), "quyangdian_bianhao", quyangdianBianhao)
|
.notIn("renwu_zhuangtai", LimsSxtQuyangJihuaRenwuStatus.CANCELLED,
|
LimsSxtQuyangJihuaRenwuStatus.INVALIDATED)
|
.orderByAsc("yangpin_leixing", "suoshu_chejian", "quyang_didian", "quyangdian_bianhao", "jihua_riqi");
|
return renwuMapper.selectList(query);
|
}
|
|
private LimsSxtKanbanRowVo toRow(LimsSxtQuyangJihuaRenwuEntity renwu) {
|
LimsSxtKanbanRowVo row = new LimsSxtKanbanRowVo();
|
row.setQuyangdianId(renwu.getQuyangdianId());
|
row.setYangpinLeixing(renwu.getYangpinLeixing());
|
row.setYangpinLeixingMingcheng(renwu.getYangpinLeixingMingcheng());
|
row.setSuoshuChejian(renwu.getSuoshuChejian());
|
row.setQuyangDidian(renwu.getQuyangDidian());
|
row.setQuyangdianBianhao(renwu.getQuyangdianBianhao());
|
return row;
|
}
|
|
private LimsSxtKanbanItemVo toItem(LimsSxtQuyangJihuaRenwuEntity renwu) {
|
LimsSxtKanbanItemVo item = new LimsSxtKanbanItemVo();
|
BeanUtils.copyProperties(toRow(renwu), item);
|
item.setRenwuId(renwu.getId());
|
item.setJihuaId(renwu.getJihuaId());
|
item.setJihuaMingcheng(renwu.getJihuaMingcheng());
|
item.setJihuaRiqi(renwu.getJihuaRiqi());
|
item.setRenwuZhuangtai(renwu.getRenwuZhuangtai());
|
item.setRenwuZhuangtaiYuanyinDaima(renwu.getRenwuZhuangtaiYuanyinDaima());
|
item.setRenwuZhuangtaiYuanyin(renwu.getRenwuZhuangtaiYuanyin());
|
item.setJianyanXiangmu(renwu.getJianyanXiangmu());
|
item.setJianyanXiangmuMingcheng(renwu.getJianyanXiangmuMingcheng());
|
item.setQingyandanId(renwu.getQingyandanId());
|
item.setQingyandanLiushuihao(renwu.getQingyandanLiushuihao());
|
item.setQingyandanZhuangtai(renwu.getQingyandanZhuangtai());
|
item.setCanDelete(isKeQuxiao(renwu));
|
return item;
|
}
|
|
private boolean isKeQuxiao(LimsSxtQuyangJihuaRenwuEntity renwu) {
|
LocalDate jihuaRiqi = renwu.getJihuaRiqi().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
return jihuaRiqi.isAfter(LocalDate.now()) && !StringUtils.hasText(renwu.getQingyandanId())
|
&& (LimsSxtQuyangJihuaRenwuStatus.PENDING.equals(renwu.getRenwuZhuangtai())
|
|| LimsSxtQuyangJihuaRenwuStatus.BLOCKED_CONFIG_INVALID.equals(renwu.getRenwuZhuangtai()));
|
}
|
|
private String dangqianZuhuId() {
|
UserInfo user = UserProvider.getUser();
|
return user == null || !StringUtils.hasText(user.getTenantId()) ? "0" : user.getTenantId();
|
}
|
}
|