Commit cd63c3fe by lijingjing

添加采样管理相关功能;

parent 0e500c49
...@@ -57,6 +57,23 @@ public class ContractSampleController extends ServiceController { ...@@ -57,6 +57,23 @@ public class ContractSampleController extends ServiceController {
return success(contractSampleService.pageVO(getPage(), contractSample)); return success(contractSampleService.pageVO(getPage(), contractSample));
} }
@ApiOperation("合同下的储运合同分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
@ApiImplicitParam(name = RestConstants.PAGE_ROWS, value = "每页条数", required = true, paramType = "query", dataTypeClass = Integer.class),
@ApiImplicitParam(name = RestConstants.PAGE_SIDX, value = "排序字段", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = RestConstants.PAGE_SORD, value = "排序方式", paramType = "query", dataTypeClass = String.class),
})
@PostMapping("/page_by_contract")
public RestResult<Page<ContractSampleVO>> getPageByContract(ContractSampleVO contractSample) {
// 根据组织显示数据
// contractSample.setPeriod(userInfoService.getUserPeriod(getAccount()));
if (null == contractSample.getContractId()) {
return success(null);
}
return success(contractSampleService.pageVO(getPage(), contractSample));
}
@ApiOperation("合同登记历史分页列表") @ApiOperation("合同登记历史分页列表")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class), @ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
......
package com.patzn.cloud.service.lims.hmhj.controller; package com.patzn.cloud.service.lims.hmhj.controller;
import com.patzn.cloud.service.hmhj.entity.EntrustSampleBackup;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleBackupStatusEnum;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleBackupVO;
import com.patzn.cloud.service.lims.hmhj.service.impl.UserInfoServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.api.RestConstants; import com.patzn.cloud.commons.api.RestConstants;
import com.patzn.cloud.commons.api.RestResult; import com.patzn.cloud.commons.api.RestResult;
import com.patzn.cloud.commons.controller.ServiceController; import com.patzn.cloud.commons.controller.ServiceController;
import com.patzn.cloud.service.hmhj.entity.EntrustSampleBackup;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleBackupStatusEnum;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleBackupVO;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustSampleBackupService; import com.patzn.cloud.service.lims.hmhj.service.IEntrustSampleBackupService;
import com.patzn.cloud.service.lims.hmhj.service.impl.UserInfoServiceImpl;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
...@@ -59,6 +50,21 @@ public class EntrustSampleBackupController extends ServiceController { ...@@ -59,6 +50,21 @@ public class EntrustSampleBackupController extends ServiceController {
return success(entrustSampleBackupService.pageVO(getPage(), entrustSampleBackup)); return success(entrustSampleBackupService.pageVO(getPage(), entrustSampleBackup));
} }
@ApiOperation("样品备样分页列表-采样")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
@ApiImplicitParam(name = RestConstants.PAGE_ROWS, value = "每页条数", required = true, paramType = "query", dataTypeClass = Integer.class),
@ApiImplicitParam(name = RestConstants.PAGE_SIDX, value = "排序字段", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = RestConstants.PAGE_SORD, value = "排序方式", paramType = "query", dataTypeClass = String.class),
})
@PostMapping("/page_sampling")
public RestResult<Page<EntrustSampleBackupVO>> getPageSampling(EntrustSampleBackupVO entrustSampleBackup) {
entrustSampleBackup.setStatus(EntrustSampleBackupStatusEnum.BACKUP_ING);
entrustSampleBackup.setType("BY");
entrustSampleBackup.setGroupNameList(userInfoService.getCurGroupNameList());
return success(entrustSampleBackupService.pageCO(getPage(), entrustSampleBackup));
}
@ApiOperation("样品备样历史分页列表") @ApiOperation("样品备样历史分页列表")
@ApiImplicitParams({ @ApiImplicitParams({
......
...@@ -17,4 +17,5 @@ public interface ContractSamplingMapper extends BatchMapper<ContractSampling> { ...@@ -17,4 +17,5 @@ public interface ContractSamplingMapper extends BatchMapper<ContractSampling> {
List<ContractSamplingVO> selectVOList(RowBounds rowBounds, @Param("vo") ContractSamplingVO contractSamplingVO); List<ContractSamplingVO> selectVOList(RowBounds rowBounds, @Param("vo") ContractSamplingVO contractSamplingVO);
String selectLastCode(String queryKey);
} }
package com.patzn.cloud.service.lims.hmhj.mapper; package com.patzn.cloud.service.lims.hmhj.mapper;
import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.service.hmhj.entity.EntrustSampleBackup;
import com.patzn.cloud.commons.mapper.BatchMapper; import com.patzn.cloud.commons.mapper.BatchMapper;
import com.patzn.cloud.service.hmhj.entity.EntrustSampleBackup;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleBackupVO; import com.patzn.cloud.service.hmhj.vo.EntrustSampleBackupVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.RowBounds; import org.apache.ibatis.session.RowBounds;
...@@ -21,5 +21,7 @@ public interface EntrustSampleBackupMapper extends BatchMapper<EntrustSampleBack ...@@ -21,5 +21,7 @@ public interface EntrustSampleBackupMapper extends BatchMapper<EntrustSampleBack
List<EntrustSampleBackupVO> selectVOList(RowBounds rowBounds, @Param("vo") EntrustSampleBackupVO entrustSampleBackup); List<EntrustSampleBackupVO> selectVOList(RowBounds rowBounds, @Param("vo") EntrustSampleBackupVO entrustSampleBackup);
List<EntrustSampleBackupVO> selectCOList(RowBounds rowBounds, @Param("vo") EntrustSampleBackupVO entrustSampleBackup);
List<EntrustSampleBackupVO> selectManageList(Page<EntrustSampleBackupVO> page, @Param("vo") EntrustSampleBackupVO entrustSampleBackup); List<EntrustSampleBackupVO> selectManageList(Page<EntrustSampleBackupVO> page, @Param("vo") EntrustSampleBackupVO entrustSampleBackup);
} }
...@@ -28,4 +28,6 @@ public interface IContractSamplingService extends IBaseService<ContractSampling> ...@@ -28,4 +28,6 @@ public interface IContractSamplingService extends IBaseService<ContractSampling>
boolean saveOrUpdateInfoBatch(List<ContractSampling> sampleList); boolean saveOrUpdateInfoBatch(List<ContractSampling> sampleList);
boolean updateSampling(ContractSampling contractSampling); boolean updateSampling(ContractSampling contractSampling);
String getNewCode(String queryKey, int lens);
} }
...@@ -24,7 +24,11 @@ public interface IEntrustSampleBackupService extends IBaseService<EntrustSampleB ...@@ -24,7 +24,11 @@ public interface IEntrustSampleBackupService extends IBaseService<EntrustSampleB
Page<EntrustSampleBackupVO> pageVO(Page<EntrustSampleBackupVO> page, EntrustSampleBackupVO entrustSampleBackup); Page<EntrustSampleBackupVO> pageVO(Page<EntrustSampleBackupVO> page, EntrustSampleBackupVO entrustSampleBackup);
Page<EntrustSampleBackupVO> pageCO(Page<EntrustSampleBackupVO> page, EntrustSampleBackupVO entrustSampleBackup);
boolean submitToHandle(Long[] ids, Account account); boolean submitToHandle(Long[] ids, Account account);
Page<EntrustSampleBackupVO> pageManage(Page<EntrustSampleBackupVO> page, EntrustSampleBackupVO entrustSampleBackup); Page<EntrustSampleBackupVO> pageManage(Page<EntrustSampleBackupVO> page, EntrustSampleBackupVO entrustSampleBackup);
void updateEntrustId(Long id, List<String> contractSamplings);
} }
...@@ -170,7 +170,7 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper, ...@@ -170,7 +170,7 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
continue; continue;
} }
if (sheet.getRow(beginRowNum - 1).getCell(k).getStringCellValue().equals("合同数量")) { if (sheet.getRow(beginRowNum - 1).getCell(k).getStringCellValue().equals("合同数量")) {
info.setContractQuantity(row.getCell(k).getStringCellValue()); info.setContractQuantity(row.getCell(k).getNumericCellValue() + "");
continue; continue;
} }
if (sheet.getRow(beginRowNum - 1).getCell(k).getStringCellValue().equals("货位")) { if (sheet.getRow(beginRowNum - 1).getCell(k).getStringCellValue().equals("货位")) {
......
...@@ -13,10 +13,7 @@ import com.patzn.cloud.commons.service.impl.BaseServiceImpl; ...@@ -13,10 +13,7 @@ import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.hmhj.dto.ContractSampleDTO; import com.patzn.cloud.service.hmhj.dto.ContractSampleDTO;
import com.patzn.cloud.service.hmhj.dto.ContractSampleVODTO; import com.patzn.cloud.service.hmhj.dto.ContractSampleVODTO;
import com.patzn.cloud.service.hmhj.entity.*; import com.patzn.cloud.service.hmhj.entity.*;
import com.patzn.cloud.service.hmhj.enums.CodeTypeEnum; import com.patzn.cloud.service.hmhj.enums.*;
import com.patzn.cloud.service.hmhj.enums.ContractInfoStatusEnum;
import com.patzn.cloud.service.hmhj.enums.ContractSampleStatusEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleStatusEnum;
import com.patzn.cloud.service.hmhj.vo.ContractSampleVO; import com.patzn.cloud.service.hmhj.vo.ContractSampleVO;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO; import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO;
import com.patzn.cloud.service.lims.common.BeanUtils; import com.patzn.cloud.service.lims.common.BeanUtils;
...@@ -69,6 +66,8 @@ public class ContractSampleServiceImpl extends BaseServiceImpl<ContractSampleMap ...@@ -69,6 +66,8 @@ public class ContractSampleServiceImpl extends BaseServiceImpl<ContractSampleMap
@Autowired @Autowired
private IEntrustSampleService entrustSampleService; private IEntrustSampleService entrustSampleService;
@Autowired
private IContractSamplingService contractSamplingService;
@Autowired @Autowired
private IContractSampleItemService contractSampleItemService; private IContractSampleItemService contractSampleItemService;
...@@ -77,6 +76,9 @@ public class ContractSampleServiceImpl extends BaseServiceImpl<ContractSampleMap ...@@ -77,6 +76,9 @@ public class ContractSampleServiceImpl extends BaseServiceImpl<ContractSampleMap
private IEntrustSampleItemService entrustSampleItemService; private IEntrustSampleItemService entrustSampleItemService;
@Autowired @Autowired
private IEntrustSampleBackupService entrustSampleBackupService;
@Autowired
private ILmsMsgService lmsMsgService; private ILmsMsgService lmsMsgService;
@Override @Override
...@@ -281,6 +283,8 @@ public class ContractSampleServiceImpl extends BaseServiceImpl<ContractSampleMap ...@@ -281,6 +283,8 @@ public class ContractSampleServiceImpl extends BaseServiceImpl<ContractSampleMap
// lmsMsgService.sendMsg("/hmhj/accept_manage/sub_register", "验收任务登记提交至外委登记,请及时处理", "新的外委登记任务!", account, null); // lmsMsgService.sendMsg("/hmhj/accept_manage/sub_register", "验收任务登记提交至外委登记,请及时处理", "新的外委登记任务!", account, null);
contractSampleRecordService.record(ids, ContractSampleStatusEnum.DATA_SAMPLING, ContractSampleStatusEnum.OUT_DRIFT, 0, "采样管理提交外委登记", account); contractSampleRecordService.record(ids, ContractSampleStatusEnum.DATA_SAMPLING, ContractSampleStatusEnum.OUT_DRIFT, 0, "采样管理提交外委登记", account);
lmsMsgService.sendMsg("/hmhj/accept_manage/sub_register", "采样管理提交至外委登记,请及时处理", "新的外委登记任务!", account, null); lmsMsgService.sendMsg("/hmhj/accept_manage/sub_register", "采样管理提交至外委登记,请及时处理", "新的外委登记任务!", account, null);
// 额外处理备样数据
backupSampleHandler(ids, account);
return super.update(contractSample, Condition.create().in("id", ids)); return super.update(contractSample, Condition.create().in("id", ids));
} }
...@@ -294,6 +298,7 @@ public class ContractSampleServiceImpl extends BaseServiceImpl<ContractSampleMap ...@@ -294,6 +298,7 @@ public class ContractSampleServiceImpl extends BaseServiceImpl<ContractSampleMap
contractSample.setProgress(ContractSampleStatusEnum.CHECK_RESULT_INPUT); contractSample.setProgress(ContractSampleStatusEnum.CHECK_RESULT_INPUT);
contractSampleRecordService.record(ids, ContractSampleStatusEnum.OUT_DRIFT, ContractSampleStatusEnum.CHECK_RESULT_INPUT, 0, "外委登记提交至验收结果录入", account); contractSampleRecordService.record(ids, ContractSampleStatusEnum.OUT_DRIFT, ContractSampleStatusEnum.CHECK_RESULT_INPUT, 0, "外委登记提交至验收结果录入", account);
// lmsMsgService.sendMsg("/hmhj/accept_manage/sub_register","验收任务登记提交至外委登记,请及时处理","新的外委登记任务!",account,null); // lmsMsgService.sendMsg("/hmhj/accept_manage/sub_register","验收任务登记提交至外委登记,请及时处理","新的外委登记任务!",account,null);
backupSampleHandler(ids, account);
return super.update(contractSample, Condition.create().in("id", ids)); return super.update(contractSample, Condition.create().in("id", ids));
} }
...@@ -685,6 +690,7 @@ public class ContractSampleServiceImpl extends BaseServiceImpl<ContractSampleMap ...@@ -685,6 +690,7 @@ public class ContractSampleServiceImpl extends BaseServiceImpl<ContractSampleMap
// //
ContractSample contractSample = new ContractSample(); ContractSample contractSample = new ContractSample();
BeanUtils.copyProperties(contractInfo, contractSample); BeanUtils.copyProperties(contractInfo, contractSample);
BeanUtils.copyProperties(contractSampleDTO, contractSample, true);
contractSample.setId(IdWorker.getId()); contractSample.setId(IdWorker.getId());
String contractSampleCode = codeRuleService.getKey((Integer) CodeTypeEnum.STORAGE_TASK_CODE.getValue(), CodeTypeEnum.STORAGE_TASK_CODE.getName(), contractSample); String contractSampleCode = codeRuleService.getKey((Integer) CodeTypeEnum.STORAGE_TASK_CODE.getValue(), CodeTypeEnum.STORAGE_TASK_CODE.getName(), contractSample);
contractSample.setCode(contractSampleCode); contractSample.setCode(contractSampleCode);
...@@ -725,4 +731,32 @@ public class ContractSampleServiceImpl extends BaseServiceImpl<ContractSampleMap ...@@ -725,4 +731,32 @@ public class ContractSampleServiceImpl extends BaseServiceImpl<ContractSampleMap
return super.update(contractSample, Condition.create().in("id", ids)); return super.update(contractSample, Condition.create().in("id", ids));
} }
private void backupSampleHandler(Long[] ids, Account account) {
if (null == ids || 0 == ids.length) {
return;
}
List<ContractSample> contractSamples = getBatchIds(Arrays.asList(ids));
List<EntrustSampleBackup> sampleBackupList = new ArrayList<>();
contractSamples.forEach(t -> {
List<ContractSampling> samplingList = contractSamplingService.list(Condition.create().eq("contract_sample_id", t.getId()).ne("type", 0));
if (CollectionUtils.isEmpty(samplingList)) {
sampleBackupList.addAll(samplingList.stream().map(x -> {
EntrustSampleBackup backup = new EntrustSampleBackup();
BeanUtils.copyProperties(x, backup);
backup.setId(null);
backup.setContractId(x.getContractSampleId()).setSampleId(x.getId()).setType("BY")
.setStatus(EntrustSampleBackupStatusEnum.BACKUP_ING)
.setProgress(EntrustSampleBackupStatusEnum.BACKUP_ING)
.setCtime(new Date()).setUid(account.getUserId()).setLid(null).setLtime(null);
return backup;
}).collect(Collectors.toList()));
}
});
if (CollectionUtils.isNotEmpty(sampleBackupList)) {
entrustSampleBackupService.saveBatch(sampleBackupList);
}
}
} }
...@@ -6,14 +6,28 @@ import com.baomidou.mybatisplus.mapper.Wrapper; ...@@ -6,14 +6,28 @@ import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.toolkit.CollectionUtils; import com.baomidou.mybatisplus.toolkit.CollectionUtils;
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.LoginHelper;
import com.patzn.cloud.commons.exception.PatznException;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl; import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.feign.base.client.SysOrgClient;
import com.patzn.cloud.feign.lims.hmhj.client.LmsChemicalCategoryClient;
import com.patzn.cloud.service.base.entity.SysOrg;
import com.patzn.cloud.service.hmhj.entity.ContractSampling; import com.patzn.cloud.service.hmhj.entity.ContractSampling;
import com.patzn.cloud.service.hmhj.entity.UserInspectionCode;
import com.patzn.cloud.service.hmhj.enums.CodeTypeEnum;
import com.patzn.cloud.service.hmhj.vo.ContractSamplingVO; import com.patzn.cloud.service.hmhj.vo.ContractSamplingVO;
import com.patzn.cloud.service.lims.chemical.entity.LmsChemicalCategory;
import com.patzn.cloud.service.lims.hmhj.common.consts.HmConst;
import com.patzn.cloud.service.lims.hmhj.mapper.ContractSamplingMapper; import com.patzn.cloud.service.lims.hmhj.mapper.ContractSamplingMapper;
import com.patzn.cloud.service.lims.hmhj.service.ICodeRuleService;
import com.patzn.cloud.service.lims.hmhj.service.IContractSamplingService; import com.patzn.cloud.service.lims.hmhj.service.IContractSamplingService;
import com.patzn.cloud.service.lims.hmhj.service.IUserInspectionCodeService;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalTime;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
...@@ -26,6 +40,18 @@ import java.util.List; ...@@ -26,6 +40,18 @@ import java.util.List;
@Service @Service
public class ContractSamplingServiceImpl extends BaseServiceImpl<ContractSamplingMapper, ContractSampling> implements IContractSamplingService { public class ContractSamplingServiceImpl extends BaseServiceImpl<ContractSamplingMapper, ContractSampling> implements IContractSamplingService {
@Autowired
private SysOrgClient sysOrgClient;
@Autowired
private ICodeRuleService codeRuleService;
@Autowired
private LmsChemicalCategoryClient lmsChemicalCategoryClient;
@Autowired
private IUserInspectionCodeService userInspectionCodeService;
@Override @Override
public Page<ContractSampling> page(Page<ContractSampling> page, ContractSampling contractSampling) { public Page<ContractSampling> page(Page<ContractSampling> page, ContractSampling contractSampling) {
Wrapper wrapper = new EntityWrapper<>(contractSampling); Wrapper wrapper = new EntityWrapper<>(contractSampling);
...@@ -63,6 +89,7 @@ public class ContractSamplingServiceImpl extends BaseServiceImpl<ContractSamplin ...@@ -63,6 +89,7 @@ public class ContractSamplingServiceImpl extends BaseServiceImpl<ContractSamplin
sampleList.forEach(t -> { sampleList.forEach(t -> {
RestAssert.fail(null == t.getType(), "样品类型为空"); RestAssert.fail(null == t.getType(), "样品类型为空");
RestAssert.fail(StringUtils.isBlank(t.getName()), "样品名称为空"); RestAssert.fail(StringUtils.isBlank(t.getName()), "样品名称为空");
initSamplingCode(t);
}); });
return saveOrUpdateBatch(sampleList); return saveOrUpdateBatch(sampleList);
} }
...@@ -71,4 +98,164 @@ public class ContractSamplingServiceImpl extends BaseServiceImpl<ContractSamplin ...@@ -71,4 +98,164 @@ public class ContractSamplingServiceImpl extends BaseServiceImpl<ContractSamplin
public boolean updateSampling(ContractSampling contractSampling) { public boolean updateSampling(ContractSampling contractSampling) {
return updateById(contractSampling); return updateById(contractSampling);
} }
public void initSamplingCode(ContractSampling sample) {
// 样品类型\名称
String category = sample.getCategory();
String sampleName = sample.getName();
RestAssert.fail(StringUtils.isBlank(category), "样品类型不能为空");
String parentCategory = "";
if (StringUtils.isNotBlank(category)) {
LmsChemicalCategory chemicalCategory = lmsChemicalCategoryClient.getTopCategory(category).getData();
RestAssert.fail(null == chemicalCategory, "样品(物资)类型不能为空");
parentCategory = chemicalCategory.getName();
}
// 判断槽号不能为空
if ("散样".equals(parentCategory)) {
RestAssert.fail(StringUtils.isBlank(sample.getSlotNo()), "样品槽号为空");
}
Account account = LoginHelper.getAccount();
int codeTypeNo = 0;
List<SysOrg> orgList = sysOrgClient.getListByUserId(account.getUserId()).getData();
// 具体是哪一期
String phase = orgList.stream().anyMatch(t -> t.getName().contains("二期")) ? "Z" : "F";
// 默认样品初始编号
CodeTypeEnum codeType = null;
switch (parentCategory) {
case HmConst.PRIMARY_ALUMINUM:
codeType = CodeTypeEnum.SAMPLE_YL_CODE;
break;
case HmConst.ELECTROLYTE:
codeType = CodeTypeEnum.SAMPLE_DJZ_CODE;
break;
case HmConst.EXTERNAL_INSPECTION_MATERIALS:
codeType = CodeTypeEnum.SAMPLE_WWJC_CODE;
break;
case HmConst.THIRD_CODE_MATERIALS:
codeType = CodeTypeEnum.SAMPLE_YFL_CODE;
break;
case HmConst.SCATTERED:
if ("原铝散样".equals(sampleName)) {
codeType = CodeTypeEnum.AL_BULK_SAMPLE_CODE;
} else if ("原铝重取".equals(sampleName)) {
codeType = CodeTypeEnum.AL_RETAKE_SAMPLE_CODE;
} else if ("电解质散样".equals(sampleName)) {
codeType = CodeTypeEnum.ELECT_BULK_SAMPLE_CODE;
}
break;
default:
codeType = CodeTypeEnum.SAMPLE_CODE;
break;
}
String sampleCode;
String replaceStr = "XX", inspectNo = "", secondCode = "", thirdCode = "";
// ==
if (HmConst.EXIST_CODE_MATERIALS.equals(parentCategory)) {
sampleCode = sample.getCode();
} else {
sampleCode = codeRuleService.getKey((Integer) codeType.getValue(), codeType.getName(), sample);
// 若为外委检测和三级编码,则查询质检编号
if (CodeTypeEnum.SAMPLE_WWJC_CODE == codeType || CodeTypeEnum.SAMPLE_YFL_CODE == codeType) {
List<UserInspectionCode> userInspectionCodeList = userInspectionCodeService.list(Condition.create().eq("user_id", account.getUserId()).eq("type", "ZJ").eq("deleted", 0));
if (org.apache.commons.collections.CollectionUtils.isNotEmpty(userInspectionCodeList)) {
inspectNo = userInspectionCodeList.get(0).getNo();
}
}
if (CodeTypeEnum.SAMPLE_YL_CODE == codeType || CodeTypeEnum.SAMPLE_DJZ_CODE == codeType) {
sampleCode += sample.getSlotNo();
}
// 外委检测样品编号
else if (CodeTypeEnum.SAMPLE_WWJC_CODE == codeType) {
sampleCode = phase + sampleCode.substring(1);
secondCode = sampleCode.replace(replaceStr, "");
sampleCode = sampleCode.replace(replaceStr, inspectNo);
}
// 三级编码默认使用第一级别的委托的编码,也就是默认为A
else if (CodeTypeEnum.SAMPLE_YFL_CODE == codeType) {
sampleCode = phase + sampleCode.substring(1);
secondCode = sampleCode.replace("A", "B").replace(replaceStr, inspectNo);
thirdCode = sampleCode.replace("A", "C").replace(replaceStr, "HY");
sampleCode = sampleCode.replace(replaceStr, inspectNo);
}
// 原铝散样样品编号处理
else if (CodeTypeEnum.AL_BULK_SAMPLE_CODE == codeType) {
// 替换槽号CH
sampleCode = sampleCode.replace("CH", sample.getSlotNo());
// 根据当前系统时间获取班次
LocalTime now = LocalTime.now();
LocalTime zero = LocalTime.parse("00:00:00");
LocalTime eight = LocalTime.parse("08:00:00");
LocalTime sixth = LocalTime.parse("16:00:00");
String clazz;
if (now.isAfter(zero) && now.isBefore(eight)) {
clazz = "E";
} else if (now.isAfter(eight) && now.isBefore(sixth)) {
clazz = "A";
} else {
clazz = "C";
}
// 替换班次BC
sampleCode = sampleCode.replace("BC", clazz);
// @yyMM&CH&BC&SN len(SN) = 3
String queryKey = sampleCode.substring(0, sampleCode.length() - 3);
sampleCode = getNewCode(queryKey, 3);
}
// 电解质散样样品编号处理
else if (CodeTypeEnum.ELECT_BULK_SAMPLE_CODE == codeType) {
// 替换槽号CH
sampleCode = sampleCode.replace("CH", sample.getSlotNo());
// @yyMM&CH&SN len(SN) = 3
String queryKey = sampleCode.substring(0, sampleCode.length() - 3);
sampleCode = getNewCode(queryKey, 3);
}
//原铝重取样品编号处理
else if (CodeTypeEnum.AL_RETAKE_SAMPLE_CODE == codeType) {
// 替换槽号CH
sampleCode = sampleCode.replace("CH", sample.getSlotNo());
// @yyMMdd&CH&C&SN len(SN) = 1
String queryKey = sampleCode.substring(0, sampleCode.length() - 1);
sampleCode = getNewCode(queryKey, 1);
}
}
if (StringUtils.isNotBlank(sampleCode)) {
sample.setCode(sampleCode);
sample.setFirstCode(sampleCode);
// 默认一级编码
sample.setCodeType(codeTypeNo);
// 若为三级编号,修改对应类别
if (codeType == CodeTypeEnum.SAMPLE_WWJC_CODE) {
sample.setCodeType(2);
sample.setSecondCode(secondCode);
} else if (codeType == CodeTypeEnum.SAMPLE_YFL_CODE) {
sample.setCodeType(3);
sample.setSecondCode(secondCode);
sample.setThirdCode(thirdCode);
}
}
}
@Override
public String getNewCode(String queryKey, int lens) {
String startKey = "0000000000000000000", defKey = queryKey + startKey.substring(0, lens - 1) + 1;
if (StringUtils.isBlank(queryKey)) {
return defKey;
}
String lastCode = baseMapper.selectLastCode(queryKey);
if (StringUtils.isBlank(lastCode)) {
return defKey;
}
String sampleSN = lastCode.substring(lastCode.length() - lens);
try {
Integer nextSN = Integer.parseInt(sampleSN) + 1;
return queryKey + startKey.substring(0, lens - nextSN.toString().length()) + nextSN;
} catch (NumberFormatException e) {
logger.error(e.getMessage(), e.getCause());
throw new PatznException("合同样品编码流水号获取异常");
}
}
} }
\ No newline at end of file
package com.patzn.cloud.service.lims.hmhj.service.impl; package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.baomidou.mybatisplus.mapper.Condition; import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.patzn.cloud.commons.api.RestAssert; import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.constant.CommonConstants;
import com.patzn.cloud.commons.controller.Account; import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.hmhj.entity.EntrustSampleBackup; import com.patzn.cloud.service.hmhj.entity.EntrustSampleBackup;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleBackupStatusEnum; import com.patzn.cloud.service.hmhj.enums.EntrustSampleBackupStatusEnum;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleBackupVO; import com.patzn.cloud.service.hmhj.vo.EntrustSampleBackupVO;
import com.patzn.cloud.service.lims.hmhj.mapper.EntrustSampleBackupMapper; import com.patzn.cloud.service.lims.hmhj.mapper.EntrustSampleBackupMapper;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustSampleBackupService; import com.patzn.cloud.service.lims.hmhj.service.IEntrustSampleBackupService;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
...@@ -30,7 +32,6 @@ public class EntrustSampleBackupServiceImpl extends BaseServiceImpl<EntrustSampl ...@@ -30,7 +32,6 @@ public class EntrustSampleBackupServiceImpl extends BaseServiceImpl<EntrustSampl
@Override @Override
public Page<EntrustSampleBackup> page(Page<EntrustSampleBackup> page, EntrustSampleBackup entrustSampleBackup) { public Page<EntrustSampleBackup> page(Page<EntrustSampleBackup> page, EntrustSampleBackup entrustSampleBackup) {
Wrapper wrapper = new EntityWrapper<>(entrustSampleBackup); Wrapper wrapper = new EntityWrapper<>(entrustSampleBackup);
return this.page(page, wrapper); return this.page(page, wrapper);
} }
...@@ -42,31 +43,53 @@ public class EntrustSampleBackupServiceImpl extends BaseServiceImpl<EntrustSampl ...@@ -42,31 +43,53 @@ public class EntrustSampleBackupServiceImpl extends BaseServiceImpl<EntrustSampl
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public boolean handleOk(Long[] ids, Account account) { public boolean handleOk(Long[] ids, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择完成处置的样品!"); RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择完成处置的样品!");
EntrustSampleBackup backup = new EntrustSampleBackup(); EntrustSampleBackup backup = new EntrustSampleBackup();
backup.setStatus(EntrustSampleBackupStatusEnum.HANDLE_OK); backup.setStatus(EntrustSampleBackupStatusEnum.HANDLE_OK);
backup.setProgress(EntrustSampleBackupStatusEnum.HANDLE_OK); backup.setProgress(EntrustSampleBackupStatusEnum.HANDLE_OK);
return super.update(backup,Condition.create().in("id",ids)); return super.update(backup, Condition.create().in("id", ids));
} }
@Override @Override
public Page<EntrustSampleBackupVO> pageVO(Page<EntrustSampleBackupVO> page, EntrustSampleBackupVO entrustSampleBackup) { public Page<EntrustSampleBackupVO> pageVO(Page<EntrustSampleBackupVO> page, EntrustSampleBackupVO entrustSampleBackup) {
return page.setRecords(baseMapper.selectVOList(page,entrustSampleBackup)); return page.setRecords(baseMapper.selectVOList(page, entrustSampleBackup));
}
@Override
public Page<EntrustSampleBackupVO> pageCO(Page<EntrustSampleBackupVO> page, EntrustSampleBackupVO entrustSampleBackup) {
return page.setRecords(baseMapper.selectCOList(page, entrustSampleBackup));
} }
@Override @Override
public boolean submitToHandle(Long[] ids, Account account) { public boolean submitToHandle(Long[] ids, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择提交处置的样品!"); RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择提交处置的样品!");
EntrustSampleBackup backup = new EntrustSampleBackup(); EntrustSampleBackup backup = new EntrustSampleBackup();
backup.setStatus(EntrustSampleBackupStatusEnum.HANDLE); backup.setStatus(EntrustSampleBackupStatusEnum.HANDLE);
backup.setProgress(EntrustSampleBackupStatusEnum.HANDLE); backup.setProgress(EntrustSampleBackupStatusEnum.HANDLE);
return super.update(backup,Condition.create().in("id",ids)); return super.update(backup, Condition.create().in("id", ids));
} }
@Override @Override
public Page<EntrustSampleBackupVO> pageManage(Page<EntrustSampleBackupVO> page, EntrustSampleBackupVO entrustSampleBackup) { public Page<EntrustSampleBackupVO> pageManage(Page<EntrustSampleBackupVO> page, EntrustSampleBackupVO entrustSampleBackup) {
return page.setRecords(baseMapper.selectManageList(page,entrustSampleBackup)); return page.setRecords(baseMapper.selectManageList(page, entrustSampleBackup));
}
@Override
public void updateEntrustId(Long entrustId, List<String> contractSamplings) {
if (null == entrustId || CollectionUtils.isEmpty(contractSamplings)) {
return;
}
Wrapper<EntrustSampleBackup> wrapper = Condition.wrapper();
for (String s : contractSamplings) {
String[] ids = s.split(CommonConstants.SYMBOL_UNDERLINE);
if (ids.length != 2) {
continue;
}
wrapper.orNew().eq("contract_id", ids[0]).eq("sampling_id", ids[1]);
}
update(new EntrustSampleBackup().setEntrustId(entrustId), wrapper);
} }
} }
...@@ -152,6 +152,11 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust> ...@@ -152,6 +152,11 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
public void initSampleCode(EntrustSample sample) { public void initSampleCode(EntrustSample sample) {
// 如果合同编号不为空,样品编号不为空,一级编号不为空,则不进行编号生成
if (null != sample.getContractSampleId() && StringUtils.isNotBlank(sample.getCode()) && StringUtils.isNotBlank(sample.getFirstCode())) {
return;
}
// 样品类型\名称 // 样品类型\名称
String category = sample.getCategory(), sampleName = sample.getName(); String category = sample.getCategory(), sampleName = sample.getName();
RestAssert.fail(StringUtils.isBlank(category), "样品类型不能为空"); RestAssert.fail(StringUtils.isBlank(category), "样品类型不能为空");
...@@ -343,8 +348,12 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust> ...@@ -343,8 +348,12 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
List<EntrustSample> saveSampleList = new ArrayList<>(); List<EntrustSample> saveSampleList = new ArrayList<>();
List<EntrustSampleItem> saveEntrustSampleItemList = new ArrayList<>(); List<EntrustSampleItem> saveEntrustSampleItemList = new ArrayList<>();
List<String> contractSamplings = new ArrayList<>();
int incNum = 10; int incNum = 10;
for (EntrustSampleDTO sampleDTO : sampleDTOList) { for (EntrustSampleDTO sampleDTO : sampleDTOList) {
if (null != sampleDTO.getContractSampleId() && null != sampleDTO.getSamplingId()) {
contractSamplings.add(sampleDTO.getContractSampleId() + "_" + sampleDTO.getSamplingId());
}
EntrustSample sample = sampleDTO.convert(EntrustSample.class); EntrustSample sample = sampleDTO.convert(EntrustSample.class);
sample.setEntrustId(entrust.getId()); sample.setEntrustId(entrust.getId());
handleSampleCode(sample); handleSampleCode(sample);
...@@ -371,10 +380,14 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust> ...@@ -371,10 +380,14 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
entrust.setTotalFee(totalFee); entrust.setTotalFee(totalFee);
//保存样品名称 //保存样品名称
entrust.setSampleName(sampleDTOList.get(0).getName()); entrust.setSampleName(sampleDTOList.get(0).getName());
if(null == entrust.getMaterialId()){ if (null == entrust.getMaterialId()) {
entrust.setMaterialId(sampleDTOList.get(0).getMaterialId()); entrust.setMaterialId(sampleDTOList.get(0).getMaterialId());
} }
if (saveEntrust(entrust)) { if (saveEntrust(entrust)) {
// 更新备样entrust_id 字段
entrustSampleBackupService.updateEntrustId(entrust.getId(),contractSamplings);
if (CollectionUtils.isNotEmpty(saveSampleList)) { if (CollectionUtils.isNotEmpty(saveSampleList)) {
entrustSampleService.saveBatch(saveSampleList); entrustSampleService.saveBatch(saveSampleList);
} }
......
...@@ -45,6 +45,14 @@ ...@@ -45,6 +45,14 @@
AND (s.factory_area is null or strpos(#{vo.period},s.factory_area) > 0 ) AND (s.factory_area is null or strpos(#{vo.period},s.factory_area) > 0 )
</if> </if>
<if test="null!=vo.contractId">
AND s.contract_id = #{vo.contractId}
</if>
<if test="null!=vo.contractCode">
AND s.contract_code LIKE CONCAT('%',#{vo.contractCode},'%')
</if>
<if test="null!=vo.statusList"> <if test="null!=vo.statusList">
AND s.status IN AND s.status IN
<foreach collection="vo.statusList" index="index" item="status" open="(" separator="," close=")"> <foreach collection="vo.statusList" index="index" item="status" open="(" separator="," close=")">
......
...@@ -30,4 +30,8 @@ ...@@ -30,4 +30,8 @@
order by s.order_by asc, s.code ,s.ctime desc order by s.order_by asc, s.code ,s.ctime desc
</select> </select>
<select id="selectLastCode" resultType="java.lang.String">
select max(s.code) "max_code" from contract_sampling s where s.deleted = 0 and s.code like concat(#{queryKey},'%')
</select>
</mapper> </mapper>
...@@ -2,25 +2,7 @@ ...@@ -2,25 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.patzn.cloud.service.lims.hmhj.mapper.EntrustSampleBackupMapper"> <mapper namespace="com.patzn.cloud.service.lims.hmhj.mapper.EntrustSampleBackupMapper">
<select id="selectVOList" resultType="com.patzn.cloud.service.hmhj.vo.EntrustSampleBackupVO"> <sql id="where">
SELECT
b.ID,
b.receive_time,
b.storage_location,
b.storage_method,
b.storage_period,
b.sample_id,
b.handler,
b.handle_time,
s.NAME AS "sampleName",
s.code AS "sampleCode" ,
e.client ,
e.code AS "entrustCode",
date_part('day', CAST(b.storage_period AS TIMESTAMP) - CAST( now() AS TIMESTAMP)) "remain_days"
FROM
entrust_sample_backup b
JOIN entrust_sample s ON b.sample_id = s.ID
JOIN entrust e ON s.entrust_id = e.ID
<where> <where>
AND b.deleted = 0 AND s.deleted = 0 AND e.deleted = 0 AND b.deleted = 0 AND s.deleted = 0 AND e.deleted = 0
<if test="null!=vo.sampleCode"> <if test="null!=vo.sampleCode">
...@@ -52,6 +34,52 @@ ...@@ -52,6 +34,52 @@
</foreach> </foreach>
</if> </if>
</where> </where>
</sql>
<select id="selectVOList" resultType="com.patzn.cloud.service.hmhj.vo.EntrustSampleBackupVO">
SELECT
b.ID,
b.receive_time,
b.storage_location,
b.storage_method,
b.storage_period,
b.sample_id,
b.handler,
b.handle_time,
s.NAME AS "sampleName",
s.code AS "sampleCode" ,
e.client ,
e.code AS "entrustCode",
date_part('day', CAST(b.storage_period AS TIMESTAMP) - CAST( now() AS TIMESTAMP)) "remain_days"
FROM
entrust_sample_backup b
JOIN entrust_sample s ON b.sample_id = s.ID
JOIN entrust e ON s.entrust_id = e.ID
<include refid="where"/>
order by date_part('day', CAST(b.storage_period AS TIMESTAMP) - CAST( now() AS TIMESTAMP)) asc,b.ctime desc
</select>
<select id="selectCOList" resultType="com.patzn.cloud.service.hmhj.vo.EntrustSampleBackupVO">
SELECT
b.ID,
b.receive_time,
b.storage_location,
b.storage_method,
b.storage_period,
b.sample_id,
b.handler,
b.handle_time,
s.NAME AS "sampleName",
s.code AS "sampleCode" ,
e.client ,
e.code AS "entrustCode",
date_part('day', CAST(b.storage_period AS TIMESTAMP) - CAST( now() AS TIMESTAMP)) "remain_days"
FROM
entrust_sample_backup b
JOIN contract_sampling s ON b.sampling_id = s.ID
LEFT JOIN entrust e ON s.entrust_id = e.ID
<include refid="where"/>
order by date_part('day', CAST(b.storage_period AS TIMESTAMP) - CAST( now() AS TIMESTAMP)) asc,b.ctime desc order by date_part('day', CAST(b.storage_period AS TIMESTAMP) - CAST( now() AS TIMESTAMP)) asc,b.ctime desc
</select> </select>
...@@ -74,37 +102,8 @@ ...@@ -74,37 +102,8 @@
entrust_sample_backup b entrust_sample_backup b
JOIN entrust_sample s ON b.sample_id = s.ID JOIN entrust_sample s ON b.sample_id = s.ID
JOIN entrust e ON s.entrust_id = e.ID JOIN entrust e ON s.entrust_id = e.ID
<where> <include refid="where"/>
AND b.deleted = 0 AND s.deleted = 0 AND e.deleted = 0
<if test="null!=vo.sampleCode">
AND s.code LIKE CONCAT('%',#{vo.sampleCode},'%')
</if>
<if test="null!=vo.status">
AND b.status =#{vo.status}
</if>
<if test="null!=vo.notStatus">
AND b.status !=#{vo.notStatus}
</if>
<if test="null!=vo.sampleName">
AND s.name LIKE CONCAT('%',#{vo.sampleName},'%')
</if>
<if test="null!=vo.client">
AND e.client LIKE CONCAT('%',#{vo.client},'%')
</if>
<if test="null!=vo.entrustCode">
AND e.code LIKE CONCAT('%',#{vo.entrustCode},'%')
</if>
<if test="null != vo.groupNameList">
AND e.test_side IN
<foreach collection="vo.groupNameList" index="index" item="groupName" open="(" separator="," close=")">
#{groupName}
</foreach>
</if>
</where>
order by (case when e.sample_handle_advise = '检测完毕退还' and s.status &gt;20 then 1 else 0 end) desc, b.ctime desc order by (case when e.sample_handle_advise = '检测完毕退还' and s.status &gt;20 then 1 else 0 end) desc, b.ctime desc
</select> </select>
</mapper> </mapper>
...@@ -18,9 +18,9 @@ public class LimsCodeGenerator { ...@@ -18,9 +18,9 @@ public class LimsCodeGenerator {
new PostgresqlGenerator().setDataSourceConfig(new DataSourceConfig() new PostgresqlGenerator().setDataSourceConfig(new DataSourceConfig()
.setDbType(DbType.POSTGRE_SQL) .setDbType(DbType.POSTGRE_SQL)
.setDriverName("org.postgresql.Driver") .setDriverName("org.postgresql.Driver")
.setUrl("jdbc:postgresql://localhost:5432/dev_lims_hmhj") .setUrl("jdbc:postgresql://meazty.fun:5433/dev_lims_hmhj")
.setUsername("dbdev") .setUsername("postgres")
.setPassword("Project312&QdPt!") .setPassword("post123")
).execute("lims"); ).execute("lims");
} }
} }
......
/** created by meazty on 2021/9/24 18:15 **/
/** created by meazty on 2021/9/24 18:15 **/
-- --
ALTER TABLE "public"."entrust_sample"
ADD COLUMN "sampling_id" int8;
COMMENT ON COLUMN "public"."entrust_sample"."sampling_id" IS '储运合同样品id';
\ No newline at end of file
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