Merge branch 'merge-yili' into 'master'
feat: 儀器校驗任務 See merge request industry-solutions/industry-solutions-division/iep/iep-qms!13
This commit is contained in:
commit
af6f67b11d
@ -0,0 +1,15 @@
|
||||
package com.foreverwin.iep.qms.dto;
|
||||
|
||||
import com.foreverwin.iep.qms.entity.QmsInspecAttachment;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class QmsInspecAttachmentDTO extends QmsInspecAttachment {
|
||||
|
||||
private MultipartFile file;
|
||||
|
||||
private byte[] bytes;
|
||||
}
|
||||
@ -1,5 +1,6 @@
|
||||
package com.foreverwin.iep.qms.dto;
|
||||
|
||||
import com.foreverwin.iep.qms.entity.QmsInspecAttachment;
|
||||
import com.foreverwin.iep.qms.entity.QmsInspecDetail;
|
||||
import com.foreverwin.iep.qms.entity.QmsInspecResult;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
@ -46,4 +47,6 @@ public class QmsInspecDetailDTO extends QmsInspecDetail {
|
||||
private List<QmsInspecFactorDTO> factorList;
|
||||
|
||||
private List<QmsInspecResultDTO> inspecResultList = new ArrayList<>();
|
||||
|
||||
private List<QmsInspecAttachment> attachmentList;
|
||||
}
|
||||
|
||||
@ -50,4 +50,8 @@ public class QmsInspecJobDTO extends QmsInspecJob {
|
||||
private String inspectLevel;
|
||||
private String supplierBatch;
|
||||
private String currentResponsible;
|
||||
|
||||
private String groupName;
|
||||
private String groupNo;
|
||||
private String calibrationType;
|
||||
}
|
||||
|
||||
@ -13,4 +13,9 @@ public class QmsQcPlanTargetDTO extends QmsQcPlanTarget {
|
||||
private String userGroup;
|
||||
private String qcPlanDesc;
|
||||
private List<QmsQcPlanTarget> qmsQcPlanTargets;
|
||||
|
||||
private String resourceBo;
|
||||
private String qcPlanBo;
|
||||
private String calibrationFreq;
|
||||
private List<String> freq;
|
||||
}
|
||||
|
||||
@ -0,0 +1,63 @@
|
||||
package com.foreverwin.iep.qms.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.extension.activerecord.Model;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 检验单单身-附件
|
||||
*
|
||||
* @author mom code generator
|
||||
* @date 2024-03-12 16:58:15
|
||||
*/
|
||||
@Data
|
||||
@TableName("qms_inspec_attachment")
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ApiModel(value = "检验单单身-附件")
|
||||
public class QmsInspecAttachment extends Model<QmsInspecAttachment> {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@TableId(type = IdType.INPUT)
|
||||
@ApiModelProperty(value = "主键")
|
||||
private String sid;
|
||||
/**
|
||||
* 检验单主键
|
||||
*/
|
||||
@ApiModelProperty(value = "检验单主键")
|
||||
private String inspecJobBo;
|
||||
/**
|
||||
* 检验单单身主键
|
||||
*/
|
||||
@ApiModelProperty(value = "检验单单身主键")
|
||||
private String inspecDetailBo;
|
||||
/**
|
||||
* 类型
|
||||
*/
|
||||
@ApiModelProperty(value = "类型")
|
||||
private String type;
|
||||
/**
|
||||
* 文件名
|
||||
*/
|
||||
@ApiModelProperty(value = "文件名")
|
||||
private String fileName;
|
||||
/**
|
||||
* 创建日期
|
||||
*/
|
||||
@ApiModelProperty(value = "创建日期")
|
||||
private LocalDateTime dateCreate;
|
||||
/**
|
||||
* 创建人员
|
||||
*/
|
||||
@ApiModelProperty(value = "创建人员")
|
||||
private String creator;
|
||||
}
|
||||
@ -0,0 +1,50 @@
|
||||
package com.foreverwin.iep.qms.controller;
|
||||
|
||||
import com.foreverwin.iep.qms.dto.QmsInspecAttachmentDTO;
|
||||
import com.foreverwin.iep.qms.service.QmsInspecAttachmentService;
|
||||
import com.foreverwin.mom.common.core.util.R;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
|
||||
/**
|
||||
* 检验单单身-附件
|
||||
*
|
||||
* @author mom code generator
|
||||
* @date 2024-03-12 16:58:15
|
||||
*/
|
||||
@RestController
|
||||
@AllArgsConstructor
|
||||
@RequestMapping("/inspec-attachment")
|
||||
@Api(value = "inspec-attachment", tags = "检验单单身-附件管理")
|
||||
public class QmsInspecAttachmentController {
|
||||
|
||||
private final QmsInspecAttachmentService qmsInspecAttachmentService;
|
||||
|
||||
@ApiOperation(value = "附件查詢", notes = "附件查詢")
|
||||
@GetMapping("/{inspecDetailBo}/list")
|
||||
public R getList(@PathVariable("inspecDetailBo") String inspecDetailBo) {
|
||||
return R.ok(qmsInspecAttachmentService.getDetailAttachment(inspecDetailBo));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "附件上傳", notes = "附件上傳")
|
||||
@PostMapping
|
||||
public R upload(QmsInspecAttachmentDTO dto) {
|
||||
return R.ok(qmsInspecAttachmentService.save(dto));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "附件下載", notes = "附件下載")
|
||||
@GetMapping("/{sid}")
|
||||
public R download(@PathVariable("sid") String sid) {
|
||||
return R.ok(qmsInspecAttachmentService.get(sid));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "附件刪除", notes = "附件刪除")
|
||||
@DeleteMapping("/{sid}")
|
||||
public R delete(@PathVariable("sid") String sid) {
|
||||
qmsInspecAttachmentService.delete(sid);
|
||||
return R.ok();
|
||||
}
|
||||
}
|
||||
@ -65,7 +65,7 @@ public class QmsInspecJobController {
|
||||
@ApiOperation(value = "收料单号開窗", notes = "收料单号開窗")
|
||||
@GetMapping("/receiptNo/page")
|
||||
public R getReceiptNo(FrontPage page,
|
||||
@RequestParam(value = "receiptNo", required = false) String receiptNo) {
|
||||
@RequestParam(value = "receiptNo", required = false) String receiptNo) {
|
||||
return R.ok(qmsInspecJobService.getReceiptNo(page, receiptNo));
|
||||
}
|
||||
|
||||
@ -101,6 +101,12 @@ public class QmsInspecJobController {
|
||||
return R.ok(qmsInspecDetailService.getIQCDetailResult(inspecDetailBo));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "儀器校驗檢驗任務明細-檢驗項目查詢", notes = "IQC檢驗任務明細-檢驗項目查詢")
|
||||
@GetMapping("/instrument/detail/result/{inspecDetailBo}")
|
||||
public R getInstrumentDetailResult(@PathVariable("inspecDetailBo") String inspecDetailBo) {
|
||||
return R.ok(qmsInspecDetailService.getInstrumentDetailResult(inspecDetailBo));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "檢驗任務明細-檢驗項目結果保存", notes = "檢驗任務明細-檢驗項目結果保存")
|
||||
@PostMapping("/detail/result")
|
||||
public R saveDetailResult(@RequestBody QmsInspecDetailDTO dto) {
|
||||
@ -156,6 +162,14 @@ public class QmsInspecJobController {
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@GlobalTransactional
|
||||
@ApiOperation(value = "儀器校驗判定", notes = "儀器校驗判定")
|
||||
@PostMapping("/instrumentJudge")
|
||||
public R instrumentJudge(@RequestBody InspecJob inspecJob) {
|
||||
qmsInspecJobService.instrumentJudge(inspecJob);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@ApiOperation(value = "檢驗任務-自動開立", notes = "檢驗任務-自動開立")
|
||||
@Inner
|
||||
@PostMapping("/api/auto")
|
||||
|
||||
@ -40,22 +40,17 @@ public class QmsQcPlanController {
|
||||
@ApiOperation(value = "分页查询", notes = "分页查询")
|
||||
@GetMapping("/page")
|
||||
public R getQmsQcPlanPage(FrontPage page, QmsQcPlan qmsQcPlan) {
|
||||
|
||||
IPage<QmsQcPlan> iPage = qmsQcPlanService.page(page.genOrders(), Wrappers.<QmsQcPlan>lambdaQuery()
|
||||
.eq(StrUtil.isNotBlank(qmsQcPlan.getInspecType()), QmsQcPlan::getInspecType, qmsQcPlan.getInspecType())
|
||||
.like(StrUtil.isNotBlank(qmsQcPlan.getQcPlan()), QmsQcPlan::getQcPlan, qmsQcPlan.getQcPlan())
|
||||
.eq(StrUtil.isNotBlank(qmsQcPlan.getUserGroup()), QmsQcPlan::getUserGroup, qmsQcPlan.getUserGroup())
|
||||
.eq(StrUtil.isNotBlank(qmsQcPlan.getCurrentRevision()), QmsQcPlan::getCurrentRevision, qmsQcPlan.getCurrentRevision())
|
||||
.eq(StrUtil.isNotBlank(qmsQcPlan.getInspecType()), QmsQcPlan::getInspecType, qmsQcPlan.getInspecType())
|
||||
.eq(QmsQcPlan::getSite, TenantContextHolder.getTenantId())
|
||||
.orderByAsc(QmsQcPlan::getQcPlan));
|
||||
iPage.getRecords().forEach(qcPlan -> {
|
||||
qcPlan.setInspecFreqNo(HandleBoProcessor.trimHandle(qcPlan.getInspecFreqBo()));
|
||||
});
|
||||
iPage.getRecords().forEach(qcPlan -> qcPlan.setInspecFreqNo(HandleBoProcessor.trimHandle(qcPlan.getInspecFreqBo())));
|
||||
return R.ok(iPage);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 通过id查询检验计划
|
||||
*
|
||||
|
||||
@ -33,4 +33,16 @@ public class JobMethod {
|
||||
log.info("End autoCreateJobService.dailyFixedTime");
|
||||
}
|
||||
}
|
||||
|
||||
@XxlJob("InspecInstrument")
|
||||
public void instrument() {
|
||||
String param = XxlJobHelper.getJobParam();
|
||||
if (StrUtil.isNotBlank(param) && JSONUtil.isTypeJSON(param)) {
|
||||
JSONObject object = JSONObject.parseObject(param);
|
||||
String site = object.getString("site");
|
||||
log.info("Starting autoCreateJobService.instrument");
|
||||
autoCreateJobService.instrument(site);
|
||||
log.info("End autoCreateJobService.instrument");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -7,4 +7,6 @@ public interface AutoCreateJobService {
|
||||
void invoke(AutoCreateJobRequest autoCreateJobRequest);
|
||||
|
||||
void dailyFixedTime(String site);
|
||||
|
||||
void instrument(String site);
|
||||
}
|
||||
|
||||
@ -0,0 +1,23 @@
|
||||
package com.foreverwin.iep.qms.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.foreverwin.iep.qms.dto.QmsInspecAttachmentDTO;
|
||||
import com.foreverwin.iep.qms.dto.QmsInspecDetailDTO;
|
||||
import com.foreverwin.iep.qms.entity.QmsInspecAttachment;
|
||||
|
||||
/**
|
||||
* 检验单单身-附件
|
||||
*
|
||||
* @author mom code generator
|
||||
* @date 2024-03-12 16:58:15
|
||||
*/
|
||||
public interface QmsInspecAttachmentService extends IService<QmsInspecAttachment> {
|
||||
|
||||
QmsInspecDetailDTO getDetailAttachment(String inspecDetailBo);
|
||||
|
||||
QmsInspecAttachmentDTO get(String sid);
|
||||
|
||||
QmsInspecAttachment save(QmsInspecAttachmentDTO dto);
|
||||
|
||||
void delete(String sid);
|
||||
}
|
||||
@ -23,4 +23,8 @@ public interface QmsInspecDetailService extends IService<QmsInspecDetail> {
|
||||
QmsInspecDetailDTO getIQCDetailResult(String inspecDetailBo);
|
||||
|
||||
void saveIQCResult(QmsInspecDetailDTO dto);
|
||||
|
||||
QmsInspecDetailDTO getInstrumentDetailResult(String inspecDetailBo);
|
||||
|
||||
QmsInspecDetailDTO getDetail(String inspecDetailBo);
|
||||
}
|
||||
|
||||
@ -25,7 +25,7 @@ public interface QmsInspecJobService extends IService<QmsInspecJob> {
|
||||
|
||||
IPage<Resource> getResrce(FrontPage page, String resrce, String operation);
|
||||
|
||||
IPage<ReceiptInfo> getReceiptNo( FrontPage page, String receiptNo);
|
||||
IPage<ReceiptInfo> getReceiptNo(FrontPage page, String receiptNo);
|
||||
|
||||
IPage<QmsInspecJobDTO> selectAll(FrontPage page, QmsInspecJobDTO dto);
|
||||
|
||||
@ -50,4 +50,6 @@ public interface QmsInspecJobService extends IService<QmsInspecJob> {
|
||||
void iqcJudge(InspecJob inspecJob);
|
||||
|
||||
void closeByTargetBo(String targetBo);
|
||||
|
||||
void instrumentJudge(InspecJob inspecJob);
|
||||
}
|
||||
|
||||
@ -20,4 +20,5 @@ public interface QmsQcPlanTargetService extends IService<QmsQcPlanTarget> {
|
||||
|
||||
List<QmsQcPlanTargetDTO> getByTargetBoAndInspectLevel(String targetBo, String inspectLevel);
|
||||
|
||||
List<QmsQcPlanTargetDTO> getTargetByInstrumentGroup(String site);
|
||||
}
|
||||
|
||||
@ -19,6 +19,7 @@ import com.foreverwin.iep.qms.constant.Freq;
|
||||
import com.foreverwin.iep.qms.domain.AutoCreateJobRequest;
|
||||
import com.foreverwin.iep.qms.domain.ChkInfo;
|
||||
import com.foreverwin.iep.qms.domain.InspecJob;
|
||||
import com.foreverwin.iep.qms.dto.QmsQcPlanTargetDTO;
|
||||
import com.foreverwin.iep.qms.entity.*;
|
||||
import com.foreverwin.iep.qms.mapper.AutoCreateJobMapper;
|
||||
import com.foreverwin.iep.qms.service.*;
|
||||
@ -216,6 +217,64 @@ public class AutoCreateJobServiceImpl implements AutoCreateJobService {
|
||||
});
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public void instrument(String site) {
|
||||
TenantContextHolder.setTenantId(site);
|
||||
|
||||
LocalDateTime now = LocalDateTime.now().withHour(23).withMinute(59).withSecond(59);
|
||||
LocalDateTime before = now.plusDays(-7).withHour(0).withMinute(0).withSecond(0);
|
||||
|
||||
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMdd");
|
||||
String immediately = now.format(dtf);
|
||||
String after = now.plusDays(7).format(dtf);
|
||||
|
||||
List<QmsQcPlanTargetDTO> targets = qmsQcPlanTargetService.getTargetByInstrumentGroup(site)
|
||||
.stream()
|
||||
.filter(filters -> {
|
||||
List<String> freq = new ArrayList<>(Arrays.asList(filters.getCalibrationFreq().split(",")));
|
||||
filters.setFreq(freq.stream()
|
||||
.filter(date -> date.compareTo(immediately) >= 0 && date.compareTo(after) <= 0)
|
||||
.collect(Collectors.toList()));
|
||||
return !filters.getFreq().isEmpty();
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
if (targets.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
targets.forEach(target -> {
|
||||
String resourceBO = target.getResourceBo();
|
||||
String qcPlan = target.getQcPlan();
|
||||
|
||||
List<String> exist = qmsInspecJobService.list(Wrappers.lambdaQuery(QmsInspecJob.class)
|
||||
.eq(QmsInspecJob::getQcPlanBo, target.getQcPlanBo())
|
||||
.eq(QmsInspecJob::getTargetBo, target.getResourceBo())
|
||||
.in(QmsInspecJob::getQcFreq, target.getFreq())
|
||||
.le(QmsInspecJob::getDateCreate, now)
|
||||
.ge(QmsInspecJob::getDateCreate, before))
|
||||
.stream()
|
||||
.map(QmsInspecJob::getQcFreq)
|
||||
.collect(Collectors.toList());
|
||||
List<String> freq = target.getFreq()
|
||||
.stream()
|
||||
.filter(date -> !exist.contains(date))
|
||||
.collect(Collectors.toList());
|
||||
freq.forEach(date -> {
|
||||
InspecJob inspecJob = new InspecJob();
|
||||
inspecJob.setTargetBo(resourceBO);
|
||||
inspecJob.setQcFreq(date);
|
||||
inspecJob.setQcPlan(qcPlan);
|
||||
inspecJob.setUser(ADMIN);
|
||||
inspecJob.setInspecType("3");
|
||||
inspecJob.setPopulationQty(BigDecimal.ONE);
|
||||
inspecJob.setNextNumberType("QMS_CAL_INSPEC_JOB");
|
||||
qmsInspecJobService.createJob(inspecJob);
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public String chkFirstSfc(Map<String, List<LotBasis>> shopOrderBoMap) {
|
||||
AtomicInteger count = new AtomicInteger(0);
|
||||
shopOrderBoMap.forEach((shopOrderBo, lotBasisList) -> {
|
||||
|
||||
@ -0,0 +1,220 @@
|
||||
package com.foreverwin.iep.qms.service.impl;
|
||||
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.foreverwin.iep.common.file.domain.SmbFileInfo;
|
||||
import com.foreverwin.iep.common.utils.ConfigUtils;
|
||||
import com.foreverwin.iep.common.utils.SidUtils;
|
||||
import com.foreverwin.iep.common.utils.SmbUtils;
|
||||
import com.foreverwin.iep.qms.dto.QmsInspecAttachmentDTO;
|
||||
import com.foreverwin.iep.qms.dto.QmsInspecDetailDTO;
|
||||
import com.foreverwin.iep.qms.entity.QmsInspecAttachment;
|
||||
import com.foreverwin.iep.qms.entity.QmsInspecJob;
|
||||
import com.foreverwin.iep.qms.mapper.QmsInspecAttachmentMapper;
|
||||
import com.foreverwin.iep.qms.service.QmsInspecAttachmentService;
|
||||
import com.foreverwin.iep.qms.service.QmsInspecDetailService;
|
||||
import com.foreverwin.iep.qms.service.QmsInspecJobService;
|
||||
import com.foreverwin.mom.admin.api.dto.SysRoleDTO;
|
||||
import com.foreverwin.mom.admin.api.feign.RemoteRoleService;
|
||||
import com.foreverwin.mom.common.core.constant.SecurityConstants;
|
||||
import com.foreverwin.mom.common.core.exception.BusinessException;
|
||||
import com.foreverwin.mom.common.core.util.I18nUtil;
|
||||
import com.foreverwin.mom.common.core.util.R;
|
||||
import com.foreverwin.mom.common.security.util.SecurityUtils;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 检验单单身-附件
|
||||
*
|
||||
* @author mom code generator
|
||||
* @date 2024-03-12 16:58:15
|
||||
*/
|
||||
@Service
|
||||
@AllArgsConstructor
|
||||
public class QmsInspecAttachmentServiceImpl extends ServiceImpl<QmsInspecAttachmentMapper, QmsInspecAttachment> implements QmsInspecAttachmentService {
|
||||
|
||||
private final QmsInspecJobService qmsInspecJobService;
|
||||
private final QmsInspecDetailService qmsInspecDetailService;
|
||||
private final RemoteRoleService remoteRoleService;
|
||||
|
||||
@Override
|
||||
public QmsInspecDetailDTO getDetailAttachment(String inspecDetailBo) {
|
||||
QmsInspecDetailDTO inspecDetail = qmsInspecDetailService.getDetail(inspecDetailBo);
|
||||
inspecDetail.setAttachmentList(list(Wrappers.lambdaQuery(QmsInspecAttachment.class)
|
||||
.eq(QmsInspecAttachment::getInspecDetailBo, inspecDetailBo)));
|
||||
return inspecDetail;
|
||||
}
|
||||
|
||||
@Override
|
||||
public QmsInspecAttachmentDTO get(String sid) {
|
||||
Map<String, String> config = ConfigUtils.getFileServerConfig();
|
||||
QmsInspecAttachment attachment = super.getById(sid);
|
||||
if (ObjectUtil.isNull(attachment)) {
|
||||
return new QmsInspecAttachmentDTO();
|
||||
}
|
||||
|
||||
String url = config.get("FILE_SERVER_URL");
|
||||
String path = config.get("FILE_SERVER_PATH");
|
||||
String username = config.get("FILE_SERVER_ID");
|
||||
String password = config.get("FILE_SERVER_PW");
|
||||
|
||||
SmbFileInfo smbFileInfo = new SmbFileInfo();
|
||||
smbFileInfo.setHost(url);
|
||||
smbFileInfo.setUsername(username);
|
||||
smbFileInfo.setPassword(password);
|
||||
smbFileInfo.setPath(getPath(attachment.getInspecJobBo(), attachment.getInspecDetailBo(), path));
|
||||
smbFileInfo.setFileName(attachment.getFileName());
|
||||
smbFileInfo = SmbUtils.downloadFile(smbFileInfo);
|
||||
|
||||
QmsInspecAttachmentDTO dto = new QmsInspecAttachmentDTO();
|
||||
BeanUtils.copyProperties(attachment, dto);
|
||||
dto.setBytes(smbFileInfo.getBytes());
|
||||
return dto;
|
||||
}
|
||||
|
||||
@Override
|
||||
public QmsInspecAttachment save(QmsInspecAttachmentDTO dto) {
|
||||
Map<String, String> config = ConfigUtils.getFileServerConfig();
|
||||
MultipartFile multipartFile = dto.getFile();
|
||||
if (multipartFile == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
String fileName = new String(multipartFile.getOriginalFilename()
|
||||
.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
|
||||
if (super.count(Wrappers.lambdaQuery(QmsInspecAttachment.class)
|
||||
.eq(QmsInspecAttachment::getInspecDetailBo, dto.getInspecDetailBo())
|
||||
.eq(QmsInspecAttachment::getFileName, fileName)) > 0) {
|
||||
throw BusinessException.build(I18nUtil.getI18nText("qms.attachment.error1", fileName));
|
||||
}
|
||||
|
||||
valid(config);
|
||||
|
||||
String url = config.get("FILE_SERVER_URL");
|
||||
String path = config.get("FILE_SERVER_PATH");
|
||||
String username = config.get("FILE_SERVER_ID");
|
||||
String password = config.get("FILE_SERVER_PW");
|
||||
|
||||
SmbFileInfo smbFileInfo = new SmbFileInfo();
|
||||
smbFileInfo.setHost(url);
|
||||
smbFileInfo.setUsername(username);
|
||||
smbFileInfo.setPassword(password);
|
||||
smbFileInfo.setPath(getPath(dto.getInspecJobBo(), dto.getInspecDetailBo(), path));
|
||||
smbFileInfo.setFileName(fileName);
|
||||
smbFileInfo.setMultipartFile(multipartFile);
|
||||
SmbUtils.uploadFile(smbFileInfo);
|
||||
|
||||
QmsInspecAttachment attachment = new QmsInspecAttachment();
|
||||
BeanUtils.copyProperties(dto, attachment);
|
||||
attachment.setSid(SidUtils.genSid());
|
||||
attachment.setCreator(SecurityUtils.getUserName());
|
||||
attachment.setDateCreate(LocalDateTime.now());
|
||||
attachment.setFileName(fileName);
|
||||
super.save(attachment);
|
||||
return attachment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(String sid) {
|
||||
Map<String, String> config = ConfigUtils.getFileServerConfig();
|
||||
QmsInspecAttachment attachment = super.getById(sid);
|
||||
if (ObjectUtil.isNull(attachment)) {
|
||||
return;
|
||||
}
|
||||
valid(attachment, config);
|
||||
|
||||
String url = config.get("FILE_SERVER_URL");
|
||||
String path = config.get("FILE_SERVER_PATH");
|
||||
String username = config.get("FILE_SERVER_ID");
|
||||
String password = config.get("FILE_SERVER_PW");
|
||||
|
||||
SmbFileInfo smbFileInfo = new SmbFileInfo();
|
||||
smbFileInfo.setHost(url);
|
||||
smbFileInfo.setUsername(username);
|
||||
smbFileInfo.setPassword(password);
|
||||
smbFileInfo.setPath(getPath(attachment.getInspecJobBo(), attachment.getInspecDetailBo(), path));
|
||||
smbFileInfo.setFileName(attachment.getFileName());
|
||||
SmbUtils.deleteFile(smbFileInfo);
|
||||
super.removeById(sid);
|
||||
}
|
||||
|
||||
private void valid(Map<String, String> config) {
|
||||
valid(null, config);
|
||||
}
|
||||
|
||||
private void valid(QmsInspecAttachment attachment, Map<String, String> config) {
|
||||
if (StrUtil.isBlank(config.get("FILE_SERVER_URL"))) {
|
||||
throw BusinessException.build(I18nUtil.getI18nText("qms.global.error1"));
|
||||
}
|
||||
if (StrUtil.isBlank(config.get("FILE_SERVER_PATH"))) {
|
||||
throw BusinessException.build(I18nUtil.getI18nText("qms.global.error4"));
|
||||
}
|
||||
if (StrUtil.isBlank(config.get("FILE_SERVER_ID"))) {
|
||||
throw BusinessException.build(I18nUtil.getI18nText("qms.global.error2"));
|
||||
}
|
||||
if (StrUtil.isBlank(config.get("FILE_SERVER_PW"))) {
|
||||
throw BusinessException.build(I18nUtil.getI18nText("qms.global.error3"));
|
||||
}
|
||||
|
||||
if (ObjectUtil.isNotNull(attachment)) {
|
||||
String user = SecurityUtils.getUserName();
|
||||
String creator = attachment.getCreator();
|
||||
|
||||
R<List<SysRoleDTO>> resp = remoteRoleService.findRolesByUser(Arrays.asList(user, creator), SecurityConstants.FROM_IN);
|
||||
List<SysRoleDTO> roleList = resp.getData();
|
||||
Map<String, List<SysRoleDTO>> roleMap = roleList.stream()
|
||||
.collect(Collectors.groupingBy(SysRoleDTO::getUsername));
|
||||
|
||||
List<String> userRoles = roleMap.get(user).stream()
|
||||
.map(SysRoleDTO::getRoleCode)
|
||||
.collect(Collectors.toList());
|
||||
List<String> creatorRoles = roleMap.get(creator).stream()
|
||||
.map(SysRoleDTO::getRoleCode)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
boolean flag = false;
|
||||
for (String role : userRoles) {
|
||||
if (creatorRoles.contains(role)) {
|
||||
flag = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!flag) {
|
||||
throw BusinessException.build(I18nUtil.getI18nText("qms.attachment.error2"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private String getPath(String inspecJobBo,
|
||||
String inspecDetailBo,
|
||||
String path) {
|
||||
QmsInspecJob qmsInspecJob = qmsInspecJobService.getById(inspecJobBo);
|
||||
QmsInspecDetailDTO qmsInspecDetail = qmsInspecDetailService.getDetail(inspecDetailBo);
|
||||
|
||||
StringBuilder builder = new StringBuilder();
|
||||
if (StrUtil.isNotBlank(path)) {
|
||||
builder.append(path);
|
||||
builder.append(FileUtil.FILE_SEPARATOR);
|
||||
}
|
||||
builder.append("CalInspect")
|
||||
.append(FileUtil.FILE_SEPARATOR)
|
||||
.append(qmsInspecJob.getJobNo())
|
||||
.append(FileUtil.FILE_SEPARATOR)
|
||||
.append(qmsInspecDetail.getQcItem());
|
||||
return builder.toString();
|
||||
}
|
||||
}
|
||||
@ -236,7 +236,6 @@ public class QmsInspecDetailServiceImpl extends ServiceImpl<QmsInspecDetailMappe
|
||||
QmsInspecDetailDTO inspecDetail = baseMapper.selectDetail(inspecDetailBo);
|
||||
QmsInspecJob inspecJob = getQmsInspecJobService().getById(inspecDetail.getInspecJobBo());
|
||||
|
||||
|
||||
QmsSamplePlanDTO samplePlan = new QmsSamplePlanDTO();
|
||||
samplePlan.setHandle(QmsSamplePlan.genHandle(site, inspecDetail.getSamplePlan()));
|
||||
samplePlan.setQty(inspecJob.getPopulationQty());
|
||||
@ -264,7 +263,7 @@ public class QmsInspecDetailServiceImpl extends ServiceImpl<QmsInspecDetailMappe
|
||||
@Override
|
||||
@Transactional
|
||||
public void saveIQCResult(QmsInspecDetailDTO dto) {
|
||||
|
||||
init();
|
||||
String inspecJobBo = dto.getInspecJobBo();
|
||||
String inspecDetailBo = dto.getHandle();
|
||||
List<QmsInspecFactorDTO> factorList = dto.getFactorList();
|
||||
@ -294,6 +293,33 @@ public class QmsInspecDetailServiceImpl extends ServiceImpl<QmsInspecDetailMappe
|
||||
qmsInspecResultNccodeService.saveBatch(inspecResultNcList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public QmsInspecDetailDTO getInstrumentDetailResult(String inspecDetailBo) {
|
||||
QmsInspecDetailDTO inspecDetail = baseMapper.selectDetail(inspecDetailBo);
|
||||
String itemType = inspecDetail.getItemType();
|
||||
|
||||
List<QmsInspecResult> inspecResults = qmsInspecResultService.list(Wrappers.lambdaQuery(QmsInspecResult.class)
|
||||
.eq(QmsInspecResult::getInspecDetailBo, inspecDetailBo));
|
||||
inspecResults.forEach(result -> {
|
||||
QmsInspecResultDTO resultDTO = new QmsInspecResultDTO();
|
||||
BeanUtils.copyProperties(result, resultDTO);
|
||||
if ("0".equals(itemType)) {
|
||||
List<QmsInspecResultNccodeDTO> ncCodeList = qmsInspecResultNccodeService.selectAll(result.getSid());
|
||||
resultDTO.setQmsInspecResultNccodeList(ncCodeList);
|
||||
}
|
||||
inspecDetail.getInspecResultList().add(resultDTO);
|
||||
});
|
||||
|
||||
inspecDetail.setOocRemark(formatter(inspecDetail.getOocRemark()));
|
||||
inspecDetail.setResultRemark(formatter(inspecDetail.getResultRemark()));
|
||||
return inspecDetail;
|
||||
}
|
||||
|
||||
@Override
|
||||
public QmsInspecDetailDTO getDetail(String inspecDetailBo) {
|
||||
return baseMapper.selectDetail(inspecDetailBo);
|
||||
}
|
||||
|
||||
private QmsInspecSn filterSn(List<QmsInspecSn> inspecSns, String seq) {
|
||||
return inspecSns.stream()
|
||||
.filter(filters -> filters.getSeq().equals(seq))
|
||||
@ -403,16 +429,16 @@ public class QmsInspecDetailServiceImpl extends ServiceImpl<QmsInspecDetailMappe
|
||||
return stringBuilder.toString();
|
||||
}
|
||||
|
||||
private String format(String str) {
|
||||
private String format(String str){
|
||||
String site = TenantContextHolder.getTenantId();
|
||||
|
||||
do {
|
||||
String key = keyword(str);
|
||||
String target = String.format("%s%s%s", percent, key, percent);
|
||||
StringBuilder i18n = new StringBuilder(key);
|
||||
if (StrUtil.isBlank(key)) {
|
||||
break;
|
||||
}
|
||||
String target = String.format("%s%s%s", percent, key, percent);
|
||||
StringBuilder i18n = new StringBuilder(key);
|
||||
|
||||
int start = str.indexOf("{");
|
||||
int end = str.indexOf("}");
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package com.foreverwin.iep.qms.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
@ -13,6 +14,7 @@ import com.foreverwin.iep.abn.entity.AbnMaster;
|
||||
import com.foreverwin.iep.abn.feign.RemoteAbnService;
|
||||
import com.foreverwin.iep.common.base.FrontPage;
|
||||
import com.foreverwin.iep.common.constant.BaseConstants;
|
||||
import com.foreverwin.iep.common.model.CustomValue;
|
||||
import com.foreverwin.iep.common.model.http.HttpResponse;
|
||||
import com.foreverwin.iep.common.model.spc.base.SpcExecuteRequest;
|
||||
import com.foreverwin.iep.common.model.spc.dc.Nc;
|
||||
@ -27,10 +29,12 @@ import com.foreverwin.iep.prd.constant.NextNumberTypeEnum;
|
||||
import com.foreverwin.iep.prd.domain.GenerateNextNumberRequest;
|
||||
import com.foreverwin.iep.prd.domain.GenerateNextNumberResponse;
|
||||
import com.foreverwin.iep.prd.domain.NextNumberRetrieveRequest;
|
||||
import com.foreverwin.iep.prd.domain.SaveCustomDataRequest;
|
||||
import com.foreverwin.iep.prd.entity.NextNumber;
|
||||
import com.foreverwin.iep.prd.entity.Operation;
|
||||
import com.foreverwin.iep.prd.entity.ReasonCode;
|
||||
import com.foreverwin.iep.prd.entity.RouterStep;
|
||||
import com.foreverwin.iep.prd.feign.RemoteCustomFieldsService;
|
||||
import com.foreverwin.iep.prd.feign.RemoteNextNumberService;
|
||||
import com.foreverwin.iep.prd.feign.RemoteRouterService;
|
||||
import com.foreverwin.iep.qms.constant.Factor;
|
||||
@ -67,7 +71,9 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.stream.Collectors;
|
||||
@ -99,6 +105,7 @@ public class QmsInspecJobServiceImpl extends ServiceImpl<QmsInspecJobMapper, Qms
|
||||
private final RemoteParamService remoteParamService;
|
||||
private final RemoteSystemTransactionLogService remoteSystemTransactionLogService;
|
||||
private final RemoteWmsReceiptDetailService remoteWmsReceiptDetailService;
|
||||
private final RemoteCustomFieldsService remoteCustomFieldsService;
|
||||
private static final String OK = "1";
|
||||
private static final String NG = "0";
|
||||
|
||||
@ -132,6 +139,7 @@ public class QmsInspecJobServiceImpl extends ServiceImpl<QmsInspecJobMapper, Qms
|
||||
.map(SysRoleDTO::getRoleCode)
|
||||
.collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
if ("1".equals(dto.getInspecType())) {
|
||||
IPage<QmsInspecJobDTO> response = baseMapper.selectIQC(page, dto);
|
||||
response.getRecords().forEach(qmsInspecJobDTO -> {
|
||||
@ -145,6 +153,8 @@ public class QmsInspecJobServiceImpl extends ServiceImpl<QmsInspecJobMapper, Qms
|
||||
}
|
||||
});
|
||||
return response;
|
||||
} else if ("3".equals(dto.getInspecType())) {
|
||||
return baseMapper.selectInstrument(page, dto);
|
||||
} else {
|
||||
return baseMapper.selectAll(page, dto);
|
||||
}
|
||||
@ -153,16 +163,19 @@ public class QmsInspecJobServiceImpl extends ServiceImpl<QmsInspecJobMapper, Qms
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public QmsInspecJob create(InspecJob inspecJob) {
|
||||
String lotNo = inspecJob.getLotNo();
|
||||
if ("0".equals(inspecJob.getInspecType())) {
|
||||
// 生產
|
||||
String lotNo = inspecJob.getLotNo();
|
||||
|
||||
LotState lotState = validation(inspecJob);
|
||||
LotBasis lotBasis = getLotBasis(lotNo);
|
||||
LotState lotState = validation(inspecJob);
|
||||
LotBasis lotBasis = getLotBasis(lotNo);
|
||||
|
||||
String item = HandleBoProcessor.trimHandle(lotBasis.getItemBo());
|
||||
String item = HandleBoProcessor.trimHandle(lotBasis.getItemBo());
|
||||
|
||||
inspecJob.setItem(item);
|
||||
inspecJob.setTargetBo(lotState.getHandle());
|
||||
inspecJob.setPopulationQty(lotState.getQty());
|
||||
inspecJob.setItem(item);
|
||||
inspecJob.setTargetBo(lotState.getHandle());
|
||||
inspecJob.setPopulationQty(lotState.getQty());
|
||||
}
|
||||
return createJob(inspecJob);
|
||||
}
|
||||
|
||||
@ -210,8 +223,8 @@ public class QmsInspecJobServiceImpl extends ServiceImpl<QmsInspecJobMapper, Qms
|
||||
.set(QmsInspecJob::getCompleteUser, user)
|
||||
.set(QmsInspecJob::getCompleteDateTime, LocalDateTime.now())
|
||||
.eq(QmsInspecJob::getHandle, inspecJobBo));
|
||||
if ("1".equals(qmsInspecJob.getInspecType())) {
|
||||
iqcUpdateDetail(qmsInspecJob);
|
||||
if ("1".equals(qmsInspecJob.getInspecType()) || "3".equals(qmsInspecJob.getInspecType())) {
|
||||
updateDetailByType(qmsInspecJob);
|
||||
} else {
|
||||
updateDetail(qmsInspecJob);
|
||||
}
|
||||
@ -912,7 +925,58 @@ public class QmsInspecJobServiceImpl extends ServiceImpl<QmsInspecJobMapper, Qms
|
||||
});
|
||||
}
|
||||
|
||||
private void iqcUpdateDetail(QmsInspecJob qmsInspecJob) {
|
||||
@Override
|
||||
public void instrumentJudge(InspecJob inspecJob) {
|
||||
String site = TenantContextHolder.getTenantId();
|
||||
String user = SecurityUtils.getUserName();
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
|
||||
String jobNo = inspecJob.getJobNo();
|
||||
String inspecJobBo = QmsInspecJob.genHandle(site, jobNo);
|
||||
String result = inspecJob.getResult();
|
||||
String judgeRemark = inspecJob.getJudgeRemark();
|
||||
|
||||
update(Wrappers.lambdaUpdate(QmsInspecJob.class)
|
||||
.set(QmsInspecJob::getStatus, "5")
|
||||
.set(QmsInspecJob::getResult, result)
|
||||
.set(QmsInspecJob::getJudgeRemark, judgeRemark)
|
||||
.set(QmsInspecJob::getJudgeUser, user)
|
||||
.set(QmsInspecJob::getJudgeDateTime, now)
|
||||
.eq(QmsInspecJob::getHandle, inspecJobBo));
|
||||
|
||||
QmsInspecJob job = getById(inspecJobBo);
|
||||
String qcPlanBo = job.getQcPlanBo();
|
||||
List<CustomValue> customValues = remoteCustomFieldsService.retrieveCustomValues(qcPlanBo, SecurityConstants.FROM_IN).getData();
|
||||
CustomValue customValue = customValues.stream()
|
||||
.filter(filters -> filters.getFieldName().equals("EXP_DAYS")
|
||||
&& StrUtil.isNotBlank(filters.getFieldValue())
|
||||
&& NumberUtil.isNumber(filters.getFieldValue()))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
if (ObjectUtil.isNotNull(customValue) && StrUtil.isNotBlank(customValue.getFieldValue())) {
|
||||
BigDecimal days = new BigDecimal(customValue.getFieldValue());
|
||||
long second = days.multiply(new BigDecimal("24")) // 時
|
||||
.multiply(new BigDecimal("60")) // 分
|
||||
.multiply(new BigDecimal("60")) // 秒
|
||||
.setScale(0, RoundingMode.HALF_UP)
|
||||
.longValue();
|
||||
LocalDateTime next = now.plusSeconds(second);
|
||||
|
||||
SaveCustomDataRequest saveCustomDataRequest = new SaveCustomDataRequest();
|
||||
saveCustomDataRequest.setRef(job.getTargetBo());
|
||||
saveCustomDataRequest.setDoFieldMerge(false);
|
||||
saveCustomDataRequest.setObjectAlias("RESRCE");
|
||||
|
||||
CustomValue value = new CustomValue();
|
||||
value.setFieldName("CAL_EXP");
|
||||
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm");
|
||||
value.setFieldValue(next.format(dateTimeFormatter));
|
||||
saveCustomDataRequest.setCustomData(new ArrayList<>(Collections.singletonList(value)));
|
||||
remoteCustomFieldsService.saveCustomData(saveCustomDataRequest, SecurityConstants.FROM_IN);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateDetailByType(QmsInspecJob qmsInspecJob) {
|
||||
String jobBo = qmsInspecJob.getHandle();
|
||||
List<QmsInspecDetailDTO> details = qmsInspecDetailService.selectAll(jobBo);
|
||||
|
||||
@ -995,7 +1059,10 @@ public class QmsInspecJobServiceImpl extends ServiceImpl<QmsInspecJobMapper, Qms
|
||||
update(Wrappers.lambdaUpdate(QmsInspecJob.class)
|
||||
.set(QmsInspecJob::getResult, hasNG ? NG : OK)
|
||||
.eq(QmsInspecJob::getHandle, jobBo));
|
||||
remoteWmsReceiptDetailService.updateInspecResult(qmsInspecJob.getTargetBo(), hasNG ? NG : OK);
|
||||
|
||||
if ("1".equals(qmsInspecJob.getInspecType())) {
|
||||
remoteWmsReceiptDetailService.updateInspecResult(qmsInspecJob.getTargetBo(), hasNG ? NG : OK);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateDetail(QmsInspecJob qmsInspecJob) {
|
||||
|
||||
@ -50,4 +50,9 @@ public class QmsQcPlanTargetServiceImpl extends ServiceImpl<QmsQcPlanTargetMappe
|
||||
public List<QmsQcPlanTargetDTO> getByTargetBoAndInspectLevel(String targetBo, String inspectLevel) {
|
||||
return super.baseMapper.get(targetBo, inspectLevel);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<QmsQcPlanTargetDTO> getTargetByInstrumentGroup(String site) {
|
||||
return baseMapper.selectTargetByInstrumentGroup(site);
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,16 @@
|
||||
package com.foreverwin.iep.qms.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.foreverwin.iep.qms.entity.QmsInspecAttachment;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* 检验单单身-附件
|
||||
*
|
||||
* @author mom code generator
|
||||
* @date 2024-03-12 16:58:15
|
||||
*/
|
||||
@Mapper
|
||||
public interface QmsInspecAttachmentMapper extends BaseMapper<QmsInspecAttachment> {
|
||||
|
||||
}
|
||||
@ -29,13 +29,16 @@ public interface QmsInspecJobMapper extends MomBaseMapper<QmsInspecJob> {
|
||||
@Param("resrce") String resrce,
|
||||
@Param("operation") String operation);
|
||||
|
||||
IPage<ReceiptInfo> selectReceiptNo( FrontPage page,
|
||||
@Param("site") String site,
|
||||
@Param("receiptNo") String receiptNo);
|
||||
IPage<ReceiptInfo> selectReceiptNo(FrontPage page,
|
||||
@Param("site") String site,
|
||||
@Param("receiptNo") String receiptNo);
|
||||
|
||||
IPage<QmsInspecJobDTO> selectAll(FrontPage page,
|
||||
@Param("dto") QmsInspecJobDTO dto);
|
||||
|
||||
IPage<QmsInspecJobDTO> selectIQC(FrontPage page,
|
||||
@Param("dto") QmsInspecJobDTO dto);
|
||||
|
||||
IPage<QmsInspecJobDTO> selectInstrument(FrontPage page,
|
||||
@Param("dto") QmsInspecJobDTO dto);
|
||||
}
|
||||
|
||||
@ -18,4 +18,6 @@ import java.util.List;
|
||||
public interface QmsQcPlanTargetMapper extends MomBaseMapper<QmsQcPlanTarget> {
|
||||
|
||||
List<QmsQcPlanTargetDTO> get( @Param("targetBo") String targetBo, @Param("inspectLevel") String inspectLevel);
|
||||
|
||||
List<QmsQcPlanTargetDTO> selectTargetByInstrumentGroup(@Param("site") String site);
|
||||
}
|
||||
|
||||
@ -0,0 +1,16 @@
|
||||
<?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.foreverwin.iep.qms.mapper.QmsInspecAttachmentMapper">
|
||||
|
||||
<resultMap id="qmsInspecAttachmentMap" type="com.foreverwin.iep.qms.entity.QmsInspecAttachment">
|
||||
<id property="sid" column="SID"/>
|
||||
<result property="inspecJobBo" column="INSPEC_JOB_BO"/>
|
||||
<result property="inspecDetailBo" column="INSPEC_DETAIL_BO"/>
|
||||
<result property="type" column="TYPE"/>
|
||||
<result property="fileName" column="FILE_NAME"/>
|
||||
<result property="dateCreate" column="DATE_CREATE"/>
|
||||
<result property="creator" column="CREATOR"/>
|
||||
</resultMap>
|
||||
</mapper>
|
||||
@ -54,6 +54,9 @@
|
||||
<result property="inspectLevel" column="INSPECT_LEVEL"/>
|
||||
<result property="supplierBatch" column="SUPPLIER_BATCH"/>
|
||||
<result property="currentResponsible" column="CURRENT_RESPONSIBLE"/>
|
||||
<result property="groupName" column="GROUP_NAME"/>
|
||||
<result property="groupNo" column="GROUP_NO"/>
|
||||
<result property="calibrationType" column="CALIBRATION_TYPE"/>
|
||||
</resultMap>
|
||||
<resultMap id="item" type="com.foreverwin.iep.qms.domain.Item">
|
||||
<result property="item" column="ITEM"/>
|
||||
@ -246,4 +249,62 @@
|
||||
</where>
|
||||
order by a.JOB_NO
|
||||
</select>
|
||||
<select id="selectInstrument" resultMap="full">
|
||||
select a.*,
|
||||
b.QC_PLAN,
|
||||
b.DESCRIPTION QC_PLAN_DESC,
|
||||
b.CALIBRATION_TYPE,
|
||||
c.RESRCE,
|
||||
c.DESCRIPTION RESRCE_DESC,
|
||||
e.GROUP_NAME,
|
||||
e.GROUP_NO
|
||||
from qms_inspec_job a
|
||||
join qms_qc_plan b on a.QC_PLAN_BO = b.HANDLE
|
||||
join resrce c on a.TARGET_BO = c.HANDLE
|
||||
left join instrument_group_member d on c.HANDLE = d.RESOURCE_BO
|
||||
left join instrument_group e on d.INSTRUMENT_GROUP_BO = e.HANDLE
|
||||
<where>
|
||||
AND a.SITE = #{dto.site}
|
||||
<if test="dto.jobNo != null and dto.jobNo != ''">
|
||||
AND a.JOB_NO = #{dto.jobNo}
|
||||
</if>
|
||||
<if test="dto.qcPlan != null and dto.qcPlan != ''">
|
||||
AND b.QC_PLAN = #{dto.qcPlan}
|
||||
</if>
|
||||
<if test="dto.userGroup != null and dto.userGroup != ''">
|
||||
AND a.USER_GROUP = #{dto.userGroup}
|
||||
</if>
|
||||
<if test="dto.resrce != null and dto.resrce != ''">
|
||||
AND c.RESRCE = #{dto.resrce}
|
||||
</if>
|
||||
<if test="dto.groupNo != null and dto.groupNo != ''">
|
||||
AND e.GROUP_NO = #{dto.groupNo}
|
||||
</if>
|
||||
<if test="dto.groupName != null and dto.groupName != ''">
|
||||
AND e.GROUP_NAME = #{dto.groupName}
|
||||
</if>
|
||||
<if test="dto.from != null">
|
||||
AND a.DATE_CREATE >= #{dto.from}
|
||||
</if>
|
||||
<if test="dto.to != null">
|
||||
AND a.DATE_CREATE <= #{dto.to}
|
||||
</if>
|
||||
<if test="dto.status != null and dto.status != ''">
|
||||
AND a.STATUS = #{dto.status}
|
||||
</if>
|
||||
<if test="dto.result != null and dto.result != ''">
|
||||
AND a.RESULT = #{dto.result}
|
||||
</if>
|
||||
<if test="dto.calibrationType != null and dto.calibrationType != ''">
|
||||
AND b.CALIBRATION_TYPE = #{dto.calibrationType}
|
||||
</if>
|
||||
<if test="dto.userGroups != null and dto.userGroups.size() > 0">
|
||||
AND a.USER_GROUP in
|
||||
<foreach collection="dto.userGroups" item="userGroup" open="(" separator="," close=")">
|
||||
#{userGroup}
|
||||
</foreach>
|
||||
</if>
|
||||
</where>
|
||||
order by a.JOB_NO
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@ -21,6 +21,12 @@
|
||||
<result property="userGroup" column="USER_GROUP"/>
|
||||
<result property="qcPlanDesc" column="QC_PLAN_DESC"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="full" type="com.foreverwin.iep.qms.dto.QmsQcPlanTargetDTO" extends="qmsQcPlanTargetMap">
|
||||
<result property="resourceBo" column="RESOURCE_BO"/>
|
||||
<result property="qcPlanBo" column="QC_PLAN_BO"/>
|
||||
<result property="calibrationFreq" column="CALIBRATION_FREQ"/>
|
||||
</resultMap>
|
||||
|
||||
<select id="get" resultMap="userGroupMap">
|
||||
select a.*, b.DESCRIPTION QC_PLAN_DESC, b.USER_GROUP
|
||||
@ -36,4 +42,18 @@
|
||||
</where>
|
||||
order by INSPECT_LEVEL
|
||||
</select>
|
||||
|
||||
<select id="selectTargetByInstrumentGroup" resultMap="full">
|
||||
select a.HANDLE,
|
||||
c.QC_PLAN,
|
||||
b.RESOURCE_BO,
|
||||
d.HANDLE QC_PLAN_BO,
|
||||
d.CALIBRATION_FREQ
|
||||
from instrument_group a
|
||||
join instrument_group_member b on a.HANDLE = b.INSTRUMENT_GROUP_BO
|
||||
join qms_qc_plan_target c on a.HANDLE = c.TARGET_BO
|
||||
join qms_qc_plan d on c.SITE = d.SITE and c.QC_PLAN = d.QC_PLAN and d.CURRENT_REVISION = 'Y'
|
||||
where a.SITE = #{site}
|
||||
and d.CALIBRATION_FREQ is not null
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user