Commit 287640ff by lijingjing

修改流程节点逻辑处理;

parent 1ba1fa62
......@@ -8,6 +8,7 @@ import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
......@@ -20,6 +21,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2;
@EnableAsync
@EnableCaching
@EnableSwagger2
@EnableScheduling
@EnableDiscoveryClient
@SpringBootApplication
@EnableTransactionManagement
......
package com.patzn.cloud.service.lims.hmhj.common;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.patzn.cloud.service.hmhj.enums.EntrustFlowEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustStatusEnum;
import org.apache.commons.lang3.StringUtils;
import java.util.Arrays;
import java.util.List;
/**
* 委托流程控制(状态控制)
*/
public class EntrustFlowUtils {
public static final String SEQ = "->";
public static List<String> getFlowStatusList(String statusPath) {
if (StringUtils.isBlank(statusPath)) {
return null;
}
return Arrays.asList(statusPath.split(SEQ));
}
public static EntrustFlowEnum getPrevFlowStatus(String name, String statusPath) {
if (StringUtils.isBlank(name)) {
return null;
}
List<String> list = getFlowStatusList(statusPath);
if (CollectionUtils.isEmpty(list)) {
return null;
}
int index = list.indexOf(name);
if (0 == index) {
return null;
}
return EntrustFlowEnum.convert(list.get(index - 1));
}
public static EntrustStatusEnum getPrevStatus(String name, String statusPath) {
EntrustFlowEnum prevFlowEnum = getPrevFlowStatus(name, statusPath);
return null == prevFlowEnum ? null : getStatus(prevFlowEnum.getValue().intValue());
}
public static EntrustStatusEnum getStatus(EntrustFlowEnum flowEnum) {
return null == flowEnum ? null : getStatus(flowEnum.getValue().intValue());
}
public static EntrustFlowEnum getNextFlowStatus(String name, String statusPath) {
if (StringUtils.isBlank(name)) {
return null;
}
List<String> list = getFlowStatusList(statusPath);
if (CollectionUtils.isEmpty(list)) {
return null;
}
int index = list.indexOf(name);
if (list.size() - 1 == index) {
return null;
}
return EntrustFlowEnum.convert(list.get(index + 1));
}
public static EntrustStatusEnum getNextStatus(String name, String statusPath) {
EntrustFlowEnum flowEnum = getNextFlowStatus(name, statusPath);
return null == flowEnum ? null : getStatus(flowEnum.getValue().intValue());
}
/**
* 根据流程状态值获取委托状态
*
* @param flowValue
* @return
*/
public static EntrustStatusEnum getStatus(int flowValue) {
EntrustStatusEnum statusEnum = null;
switch (flowValue) {
case 1:
statusEnum = EntrustStatusEnum.DRAFT;
break;
case 2:
statusEnum = EntrustStatusEnum.OUT_DRAFT;
break;
case 3:
statusEnum = EntrustStatusEnum.CHECK;
break;
case 4:
statusEnum = EntrustStatusEnum.MAKE;
break;
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
case 12:
statusEnum = EntrustStatusEnum.TEST;
break;
case 13:
statusEnum = EntrustStatusEnum.OUT_INPUT;
break;
case 14:
statusEnum = EntrustStatusEnum.QUALITY_CHECK;
break;
}
return statusEnum;
}
}
......@@ -47,10 +47,10 @@ public class EntrustController extends ServiceController {
@ApiImplicitParam(name = RestConstants.PAGE_SORD, value = "排序方式", paramType = "query", dataTypeClass = String.class),
})
@PostMapping("/page")
public RestResult<Page<Entrust>> getPage(Entrust entrust) {
public RestResult<Page<Entrust>> getPage(Entrust entrust) {
entrust.setStatus(EntrustStatusEnum.DRAFT);
return success(entrustService.page(getPage(), entrust));
}
}
@ApiOperation("外委登记分页列表")
......@@ -84,8 +84,6 @@ public class EntrustController extends ServiceController {
}
@ApiOperation("委托登记历史分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
......@@ -105,8 +103,6 @@ public class EntrustController extends ServiceController {
}
@ApiOperation("委托评审历史分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
......@@ -125,9 +121,6 @@ public class EntrustController extends ServiceController {
}
@ApiOperation("外委数据录入分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
......@@ -142,7 +135,6 @@ public class EntrustController extends ServiceController {
}
@ApiOperation("外委数据录入历史分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
......@@ -163,7 +155,6 @@ public class EntrustController extends ServiceController {
}
@ApiOperation("委托审核分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
......@@ -178,7 +169,6 @@ public class EntrustController extends ServiceController {
}
@ApiOperation("委托样品待制备分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
......@@ -193,7 +183,6 @@ public class EntrustController extends ServiceController {
}
@ApiOperation("委托制备历史分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
......@@ -208,7 +197,6 @@ public class EntrustController extends ServiceController {
}
@ApiOperation("查询 id 信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
......@@ -223,26 +211,25 @@ public class EntrustController extends ServiceController {
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
})
@PutMapping("/{id}")
public RestResult<Boolean> edit(@PathVariable("id") Long id, Entrust entrust) {
public RestResult<Boolean> edit(@PathVariable("id") Long id, Entrust entrust) {
entrust.setId(id);
return success(entrustService.updateById(entrust));
}
}
@ApiOperation("添加")
@PostMapping("/")
public RestResult<Boolean> add(Entrust entrust) {
public RestResult<Boolean> add(Entrust entrust) {
return success(entrustService.save(entrust));
}
}
@ApiOperation("根据 ids 删除")
@ApiImplicitParams({
@ApiImplicitParam(name = "ids", value = "主键列表", required = true, paramType = "query", allowMultiple = true, dataTypeClass = Long.class),
})
@DeleteMapping("/")
public RestResult<Boolean> delete(@RequestParam("ids") List<Long> ids) {
@DeleteMapping("/")
public RestResult<Boolean> delete(@RequestParam("ids") List<Long> ids) {
return success(entrustService.removeByIds(ids));
}
}
@ApiOperation(value = "添加委托单", notes = "添加委托单")
......@@ -250,24 +237,23 @@ public class EntrustController extends ServiceController {
public RestResult<Boolean> addEntrust(@RequestBody EntrustDTO dto) {
dto.setStatus(EntrustStatusEnum.DRAFT);
dto.setProgress(EntrustStatusEnum.DRAFT);
return success(entrustService.saveEntrustDTO(dto,getAccount()));
return success(entrustService.saveEntrustDTO(dto, getAccount()));
}
@ApiOperation(value = "添加外委登记委托单", notes = "添加委托单")
@PostMapping("/add_out_entrust")
public RestResult<Boolean> addOutEntrust(@RequestBody EntrustDTO dto) {
dto.setStatus(EntrustStatusEnum.OUT_DRAFT);
dto.setProgress(EntrustStatusEnum.OUT_DRAFT);
return success(entrustService.saveEntrustDTO(dto,getAccount()));
return success(entrustService.saveEntrustDTO(dto, getAccount()));
}
@ApiOperation(value = "编辑委托单", notes = "编辑报价单")
@PostMapping("/edit_entrust")
public RestResult<Boolean> editEntrust(@RequestBody EntrustDTO entrustDTO) {
return success(entrustService.editEntrust(entrustDTO,getAccount()));
return success(entrustService.editEntrust(entrustDTO, getAccount()));
}
......@@ -281,64 +267,60 @@ public class EntrustController extends ServiceController {
}
@ApiOperation("提交至外委数据录入")
@PostMapping("/submit_to_out_input")
public RestResult<Boolean> submitToOutInput(@RequestParam("ids")Long [] ids) {
return success(entrustService.submitToOutInput(ids,getAccount()));
public RestResult<Boolean> submitToOutInput(@RequestParam("ids") Long[] ids) {
return success(entrustService.submitToOutInput(ids, getAccount()));
}
@ApiOperation("提交质量判定")
@PostMapping("/out_input_submit_to_quality_check")
public RestResult<Boolean> outInputSubmitToQualityCheck(@RequestParam("ids")Long [] ids) {
return success(entrustService.outInputSubmitToQualityCheck(ids,getAccount()));
public RestResult<Boolean> outInputSubmitToQualityCheck(@RequestParam("ids") Long[] ids) {
return success(entrustService.outInputSubmitToQualityCheck(ids, getAccount()));
}
@ApiOperation("提交至委托评审")
@PostMapping("/submit_to_check")
public RestResult<Boolean> submitToCheck(@RequestParam("ids")Long [] ids) {
return success(entrustService.submitToCheck(ids,getAccount()));
public RestResult<Boolean> submitToCheck(@RequestParam("ids") Long[] ids) {
return success(entrustService.submitToCheck(ids, getAccount()));
}
@ApiOperation("提交至下一节点")
@PostMapping("/submit_to_next_node")
public RestResult<Boolean> submitToNextNode(@RequestParam("ids")Long [] ids) {
return success(entrustService.submitToNextNode(ids,getAccount()));
public RestResult<Boolean> submitToNextNode(@RequestParam("ids") Long[] ids) {
return success(entrustService.submitToNextNode(ids, getAccount()));
}
@ApiOperation("退回至上一节点")
@PostMapping("/reject_to_prev_node")
public RestResult<Boolean> rejectToPrevNode(@RequestParam("id")Long id,String reason) {
return success(entrustService.rejectToPrevNode(id,reason,getAccount()));
public RestResult<Boolean> rejectToPrevNode(@RequestParam("id") Long id, String reason) {
return success(entrustService.rejectToPrevNode(id, reason, getAccount()));
}
@ApiOperation("委托评审退回")
@PostMapping("/back_from_check")
public RestResult<Boolean> backFromCheck(@RequestParam("ids")Long [] ids,@RequestParam("reason") String reason) {
return success(entrustService.backFromCheck(ids,getAccount(),reason));
public RestResult<Boolean> backFromCheck(@RequestParam("ids") Long[] ids, @RequestParam("reason") String reason) {
return success(entrustService.backFromCheck(ids, getAccount(), reason));
}
@ApiOperation("提交至样品制备")
@PostMapping("/submit_to_make")
public RestResult<Boolean> submitToMake(@RequestParam("ids")Long [] ids) {
return success(entrustService.submitToMake(ids,getAccount()));
public RestResult<Boolean> submitToMake(@RequestParam("ids") Long[] ids) {
return success(entrustService.submitToMake(ids, getAccount()));
}
@ApiOperation("委托登记提交至委托评审")
@PostMapping("/register_submit_to_make")
public RestResult<Boolean> registerSubmitToMake(@RequestParam("ids")Long [] ids) {
return success(entrustService.registerSubmitToMake(ids,getAccount()));
public RestResult<Boolean> registerSubmitToMake(@RequestParam("ids") Long[] ids) {
return success(entrustService.registerSubmitToMake(ids, getAccount()));
}
@ApiOperation("样品接收委托分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
......@@ -355,7 +337,6 @@ public class EntrustController extends ServiceController {
}
@ApiOperation("样品接收历史委托分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
......@@ -372,7 +353,6 @@ public class EntrustController extends ServiceController {
}
@ApiOperation("任务分配委托分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
......@@ -422,10 +402,25 @@ public class EntrustController extends ServiceController {
public RestResult<Page<EntrustVO>> getPageTaskTest(EntrustVO entrust) {
entrust.setItemStatus(EntrustSampleItemStatusEnum.TEST);
// 获取当前用户分组
// entrust.setGroupNameList(userInfoService.getCurGroupNameList());
entrust.setGroupNameList(userInfoService.getCurGroupNameList());
return success(entrustService.pageEntrustByItem(getPage(), entrust));
}
@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_entrust_test_data")
public RestResult<Page<EntrustVO>> getPageTaskTestData(EntrustVO entrust) {
entrust.setItemStatus(EntrustSampleItemStatusEnum.TEST);
// 获取当前用户分组
entrust.setGroupNameList(userInfoService.getCurGroupNameList());
return success(entrustService.pageEntrustByItemData(getPage(), entrust));
}
@ApiOperation("数据录入历史委托分页列表")
@ApiImplicitParams({
......@@ -447,6 +442,25 @@ public class EntrustController extends ServiceController {
return success(entrustService.pageEntrustByItemHis(getPage(), entrust));
}
@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_entrust_test_data_his")
public RestResult<Page<EntrustVO>> getPageTaskTestDataHis(EntrustVO entrust) {
entrust.setItemStatusEnumList(Lists.newArrayList(
EntrustSampleItemStatusEnum.UPDATE_APPLY,
EntrustSampleItemStatusEnum.CHECK,
EntrustSampleItemStatusEnum.AUDIT,
EntrustSampleItemStatusEnum.END
));
// 获取当前用户分组
entrust.setGroupNameList(userInfoService.getCurGroupNameList());
return success(entrustService.pageEntrustByItemDataHis(getPage(), entrust));
}
@ApiOperation("数据复核委托分页列表")
......@@ -480,7 +494,6 @@ public class EntrustController extends ServiceController {
}
@ApiOperation("数据审核委托分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
......@@ -509,8 +522,6 @@ public class EntrustController extends ServiceController {
}
@ApiOperation("报告编制委托分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
......@@ -525,7 +536,6 @@ public class EntrustController extends ServiceController {
}
@ApiOperation("报告编制历史委托分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
......@@ -540,9 +550,6 @@ public class EntrustController extends ServiceController {
}
@ApiOperation("报告审核委托分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
......@@ -577,7 +584,7 @@ public class EntrustController extends ServiceController {
}
/***********************************************************************************/
@ApiOperation(value = "报告批准委托分页列表",notes = "报告批准委托分页列表")
@ApiOperation(value = "报告批准委托分页列表", notes = "报告批准委托分页列表")
@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),
......@@ -591,7 +598,7 @@ public class EntrustController extends ServiceController {
}
@ApiOperation(value = "报告批准历史委托分页列表",notes = "报告批准历史委托分页列表")
@ApiOperation(value = "报告批准历史委托分页列表", notes = "报告批准历史委托分页列表")
@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),
......@@ -609,7 +616,7 @@ public class EntrustController extends ServiceController {
return success(entrustService.pageEntrustByReportHis(getPage(), entrust));
}
@ApiOperation(value = "报告发放委托分页列表",notes = "报告发放委托分页列表")
@ApiOperation(value = "报告发放委托分页列表", notes = "报告发放委托分页列表")
@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),
......@@ -623,7 +630,7 @@ public class EntrustController extends ServiceController {
}
@ApiOperation(value = "报告发放历史分页列表",notes = "报告发放历史分页列表")
@ApiOperation(value = "报告发放历史分页列表", notes = "报告发放历史分页列表")
@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),
......@@ -642,7 +649,6 @@ public class EntrustController extends ServiceController {
/******************************************************************/
@ApiOperation("报告签发委托分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
......@@ -674,7 +680,6 @@ public class EntrustController extends ServiceController {
}
@ApiOperation("质量判定委托分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
......@@ -701,7 +706,7 @@ public class EntrustController extends ServiceController {
public RestResult<Page<EntrustVO>> getPageEntrustJudgeHis(EntrustVO entrust) {
entrust.setSampleStatus(EntrustSampleStatusEnum.END);
entrust.setJudgeStatusList(Lists.newArrayList(
1,2
1, 2
));
return success(entrustService.pageEntrustJudgeHis(getPage(), entrust));
}
......@@ -737,7 +742,6 @@ public class EntrustController extends ServiceController {
}
@ApiOperation("电子档案委托分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
......@@ -753,9 +757,6 @@ public class EntrustController extends ServiceController {
}
@ApiOperation("委托进度查询")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
......@@ -770,8 +771,8 @@ public class EntrustController extends ServiceController {
@ApiOperation("获取委托状态列表")
@GetMapping("/statusList")
public RestResult<EntrustStatusEnum[]> getStatusList() {
return success(EntrustStatusEnum.values());
public RestResult<EntrustFlowEnum[]> getStatusList() {
return success(EntrustFlowEnum.values());
}
}
package com.patzn.cloud.service.lims.hmhj.controller;
import com.patzn.cloud.feign.lims.hmhj.client.LmsChemicalCategoryClient;
import com.patzn.cloud.service.hmhj.entity.Material;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
......@@ -38,6 +39,9 @@ public class MaterialController extends ServiceController {
@Autowired
private IMaterialService materialService;
@Autowired
private LmsChemicalCategoryClient lmsChemicalCategoryClient;
@ApiOperation("分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
......@@ -83,4 +87,5 @@ public class MaterialController extends ServiceController {
public RestResult<Boolean> delete(@RequestParam("ids") List<Long> ids) {
return success(materialService.removeByIds(ids));
}
}
......@@ -27,4 +27,6 @@ public interface EntrustMapper extends BatchMapper<Entrust> {
List<EntrustVO> selectVOList(RowBounds rowBounds, @Param("vo")EntrustVO entrust);
List<EntrustVO> selectEntrustProgressList(RowBounds rowBounds, @Param("vo")EntrustVO entrust);
List<EntrustVO> selectVOListByItem(Page<EntrustVO> page, @Param("vo") EntrustVO entrust);
}
......@@ -42,4 +42,6 @@ public interface EntrustSampleItemMapper extends BatchMapper<EntrustSampleItem>
List<EntrustSampleItemVO> selectMinStatusBySampleIds(@Param("sampleIds")List<Long> sampleIds);
List<EntrustSampleItemVO> selectByEntrustId(@Param("entrustId") Long entrustId);
int selectUnallocatedCountByEntrustId(@Param("entrustId") Long entrustId);
}
package com.patzn.cloud.service.lims.hmhj.mapper;
import com.patzn.cloud.commons.mapper.BatchMapper;
import com.patzn.cloud.service.lims.collection.entity.LmsOriginalRecordInfo;
import java.util.List;
import java.util.Map;
/**
* <p>
* 原始记录解析后的数据存储表 Mapper 接口
* </p>
*
* @author meazty
* @since 2021-07-04
*/
public interface LmsOriginalRecordInfoMapper extends BatchMapper<LmsOriginalRecordInfo> {
/**
* @return
*/
List<LmsOriginalRecordInfo> selectUnGeneratedEntrustData();
List<LmsOriginalRecordInfo> selectUnGeneratedSampleData();
}
......@@ -67,4 +67,6 @@ public interface IEntrustSampleItemService extends IBaseService<EntrustSampleIte
boolean updateQualityJudge(Long[] ids, Account account);
List<EntrustSampleItemVO> listMinStatusBySampleIds(List<Long> entrustIds);
public boolean isAllocatedByEntrustId(Long entrustId);
}
......@@ -4,7 +4,10 @@ import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.service.IBaseService;
import com.patzn.cloud.service.hmhj.dto.SamplePrepareDTO;
import com.patzn.cloud.service.hmhj.entity.EntrustSample;
import com.patzn.cloud.service.hmhj.entity.EntrustSamplePrepare;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleItemStatusEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustSamplePrepareStatusEnum;
import java.util.List;
......@@ -23,4 +26,6 @@ public interface IEntrustSamplePrepareService extends IBaseService<EntrustSample
boolean makeEnd(SamplePrepareDTO dto, Account account);
boolean submitSampleReceive(Long[] ids, Account account);
boolean addOrUpdateToSetStatus(Long[] sampleIds, EntrustSamplePrepareStatusEnum statusEnum);
}
......@@ -7,7 +7,9 @@ import com.patzn.cloud.commons.service.IBaseService;
import com.patzn.cloud.service.hmhj.dto.QueryDTO;
import com.patzn.cloud.service.hmhj.dto.ReportDTO;
import com.patzn.cloud.service.hmhj.dto.StatsQueryDTO;
import com.patzn.cloud.service.hmhj.entity.Entrust;
import com.patzn.cloud.service.hmhj.entity.EntrustSample;
import com.patzn.cloud.service.hmhj.enums.EntrustFlowEnum;
import com.patzn.cloud.service.hmhj.vo.AlTasteStatsVO;
import com.patzn.cloud.service.hmhj.vo.ElectrolyteRatioStatsVO;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleVO;
......@@ -65,4 +67,8 @@ public interface IEntrustSampleService extends IBaseService<EntrustSample> {
List<ElectrolyteRatioStatsVO> getElectrolyteRatioStatsQuery(QueryDTO queryDTO);
Map<String,Object> getPMakeFeStatsQuery(QueryDTO queryDTO);
boolean updateSampleNextFlowInfo(Entrust entrust, EntrustFlowEnum nextFlowStatus, Account account);
boolean updateSamplePrevFlowInfo(Entrust entrust, EntrustFlowEnum prevFlowStatus, Account account);
}
......@@ -43,8 +43,12 @@ public interface IEntrustService extends IBaseService<Entrust> {
Page<EntrustVO> pageEntrustByItem(Page<EntrustVO> page, EntrustVO entrust);
Page<EntrustVO> pageEntrustByItemData(Page<EntrustVO> page, EntrustVO entrust);
Page<EntrustVO> pageEntrustByItemHis(Page<EntrustVO> page, EntrustVO entrust);
Page<EntrustVO> pageEntrustByItemDataHis(Page<EntrustVO> page, EntrustVO entrust);
Page<EntrustVO> pageEntrustBySample(Page<EntrustVO> page, EntrustVO entrust);
Page<EntrustVO> pageEntrustByNotSample(Page<EntrustVO> page, EntrustVO entrust);
......@@ -67,5 +71,9 @@ public interface IEntrustService extends IBaseService<Entrust> {
boolean submitToNextNode(Long[] ids, Account account);
boolean submitToNextNode(Entrust entrust, Account account);
boolean rejectToPrevNode(Long id,String reason, Account account);
boolean rejectToPrevNode(Entrust entrust,String reason, Account account);
}
package com.patzn.cloud.service.lims.hmhj.service;
import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.service.IBaseService;
import com.patzn.cloud.service.lims.collection.entity.LmsOriginalRecordInfo;
import java.util.List;
/**
* 原始记录解析后的数据存储表 服务类
*
* @author meazty
* @since 2021-07-04
*/
public interface ILmsOriginalRecordInfoService extends IBaseService<LmsOriginalRecordInfo> {
Page<LmsOriginalRecordInfo> page(Page<LmsOriginalRecordInfo> page, LmsOriginalRecordInfo lmsOriginalRecordInfo);
boolean removeByIds(List<Long> ids);
boolean generateOriginalRelData();
}
......@@ -3,21 +3,28 @@ package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.toolkit.ArrayUtils;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.google.common.collect.Lists;
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.oss.starter.OssClient;
import com.patzn.cloud.oss.starter.OssFileResult;
import com.patzn.cloud.service.hmhj.entity.Entrust;
import com.patzn.cloud.service.hmhj.entity.EntrustReport;
import com.patzn.cloud.service.hmhj.entity.EntrustReportRelSample;
import com.patzn.cloud.service.hmhj.entity.EntrustSample;
import com.patzn.cloud.service.hmhj.enums.EntrustFlowEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustReportStatusEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleItemStatusEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleStatusEnum;
import com.patzn.cloud.service.lims.hmhj.mapper.EntrustReportMapper;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustReportRelSampleService;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustReportService;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustSampleService;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustService;
import org.apache.commons.lang3.StringUtils;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
......@@ -27,6 +34,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
......@@ -46,6 +54,8 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe
private IEntrustReportRelSampleService entrustReportRelSampleService;
@Autowired
private IEntrustSampleService entrustSampleService;
@Autowired
private IEntrustService entrustService;
@Override
......@@ -58,24 +68,24 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe
@Override
public Page<EntrustReport> pageStatus(Page<EntrustReport> page, List<EntrustReportStatusEnum> reportStatusList, EntrustReport entrustReport) {
Wrapper wrapper = new EntityWrapper<>(entrustReport);
if (CollectionUtils.isNotEmpty(reportStatusList)){
wrapper.in("status",reportStatusList);
if (CollectionUtils.isNotEmpty(reportStatusList)) {
wrapper.in("status", reportStatusList);
}
return this.page(page, wrapper);
}
@Override
public boolean removeByIds(List<Long> ids) {
entrustReportRelSampleService.remove(Condition.create().in("report_id",ids));
entrustReportRelSampleService.remove(Condition.create().in("report_id", ids));
return baseMapper.deleteBatchIds(ids) > 0;
}
@Override
public void uploadReportGenerateDocx(Entrust entrust, Long[] ids, Account account, String name,String remark, File file) {
public void uploadReportGenerateDocx(Entrust entrust, Long[] ids, Account account, String name, String remark, File file) {
OssFileResult fileResult = ossClient.upload(file);
if (null !=fileResult){
if (null != fileResult) {
EntrustReport report = new EntrustReport();
report.setEntrustId(entrust.getId());
report.setRemark(remark);
......@@ -86,10 +96,10 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe
report.setObjectKey(fileResult.getObjectKey());
report.setVersionId(fileResult.getVersionId());
report.setSampleName(name);
if (save(report)){
if (save(report)) {
List<EntrustReportRelSample> saveRel = new ArrayList<>();
for (Long sampleId:ids) {
for (Long sampleId : ids) {
EntrustReportRelSample reportRelSample = new EntrustReportRelSample();
reportRelSample.setReportId(report.getId());
reportRelSample.setSampleId(sampleId);
......@@ -97,7 +107,7 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe
saveRel.add(reportRelSample);
}
if (CollectionUtils.isNotEmpty(saveRel)){
if (CollectionUtils.isNotEmpty(saveRel)) {
entrustReportRelSampleService.saveBatch(saveRel);
}
}
......@@ -108,228 +118,305 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe
@Transactional(rollbackFor = Exception.class)
@Override
public boolean submitReportMake(Long[] ids, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要提交的报告");
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要提交的报告");
EntrustReport report = new EntrustReport();
report.setStatus(EntrustReportStatusEnum.CHECK);
report.setProgress(EntrustReportStatusEnum.CHECK);
List<EntrustReportRelSample> relSamples = entrustReportRelSampleService.list(Condition.create().in("report_id",ids));
List<EntrustReportRelSample> relSamples = entrustReportRelSampleService.list(Condition.create().in("report_id", ids));
if (CollectionUtils.isNotEmpty(relSamples)){
List<Long> sampleIds = relSamples.stream().map(s->{
if (CollectionUtils.isNotEmpty(relSamples)) {
List<Long> sampleIds = relSamples.stream().map(s -> {
return s.getSampleId();
}).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(sampleIds)){
if (CollectionUtils.isNotEmpty(sampleIds)) {
EntrustSample sample = new EntrustSample();
sample.setStatus(EntrustSampleStatusEnum.REPORT_CHECK);
sample.setProgress(EntrustSampleStatusEnum.REPORT_CHECK);
entrustSampleService.update(sample,Condition.create().in("id",sampleIds));
entrustSampleService.update(sample, Condition.create().in("id", sampleIds));
}
}
// 存在的状态路径时,方可进入处理操作
executeSubmitOperation(getByReportId(ids[0]), account);
return super.update(report, Condition.create().in("id", ids));
}
return super.update(report, Condition.create().in("id",ids));
private Entrust getByReportId(Long reportId) {
EntrustReport report = getById(reportId);
if (null == report) {
return null;
}
return entrustService.getById(report.getEntrustId());
}
private boolean executeSubmitOperation(Entrust entrust, Account account) {
if (null == entrust || StringUtils.isBlank(entrust.getStatusPath())) {
logger.error("委托为空,或者委托路径为空不进行下一步操作");
return false;
}
entrustService.submitToNextNode(entrust, account);
return true;
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean submitReportCheck(Long[] ids, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要提交的报告");
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要提交的报告");
EntrustReport report = new EntrustReport();
report.setStatus(EntrustReportStatusEnum.ALLOW);
report.setProgress(EntrustReportStatusEnum.ALLOW);
List<EntrustReportRelSample> relSamples = entrustReportRelSampleService.list(Condition.create().in("report_id",ids));
List<EntrustReportRelSample> relSamples = entrustReportRelSampleService.list(Condition.create().in("report_id", ids));
if (CollectionUtils.isNotEmpty(relSamples)){
List<Long> sampleIds = relSamples.stream().map(s->{
if (CollectionUtils.isNotEmpty(relSamples)) {
List<Long> sampleIds = relSamples.stream().map(s -> {
return s.getSampleId();
}).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(sampleIds)){
if (CollectionUtils.isNotEmpty(sampleIds)) {
EntrustSample sample = new EntrustSample();
sample.setStatus(EntrustSampleStatusEnum.REPORT_ALLOW);
sample.setProgress(EntrustSampleStatusEnum.REPORT_ALLOW);
entrustSampleService.update(sample,Condition.create().in("id",sampleIds));
entrustSampleService.update(sample, Condition.create().in("id", sampleIds));
}
}
return super.update(report, Condition.create().in("id",ids));
}
// 存在的状态路径时,方可进入处理操作
executeSubmitOperation(getByReportId(ids[0]), account);
return super.update(report, Condition.create().in("id", ids));
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean submitFromAllowToSend(Long[] ids, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要提交的报告");
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要提交的报告");
EntrustReport report = new EntrustReport();
report.setStatus(EntrustReportStatusEnum.SEND);
report.setProgress(EntrustReportStatusEnum.SEND);
List<EntrustReportRelSample> relSamples = entrustReportRelSampleService.list(Condition.create().in("report_id",ids));
List<EntrustReportRelSample> relSamples = entrustReportRelSampleService.list(Condition.create().in("report_id", ids));
if (CollectionUtils.isNotEmpty(relSamples)){
List<Long> sampleIds = relSamples.stream().map(s->{
if (CollectionUtils.isNotEmpty(relSamples)) {
List<Long> sampleIds = relSamples.stream().map(s -> {
return s.getSampleId();
}).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(sampleIds)){
if (CollectionUtils.isNotEmpty(sampleIds)) {
EntrustSample sample = new EntrustSample();
sample.setStatus(EntrustSampleStatusEnum.REPORT_SEND);
sample.setProgress(EntrustSampleStatusEnum.REPORT_SEND);
entrustSampleService.update(sample,Condition.create().in("id",sampleIds));
entrustSampleService.update(sample, Condition.create().in("id", sampleIds));
}
}
return super.update(report, Condition.create().in("id",ids));
}
// 存在的状态路径时,方可进入处理操作
executeSubmitOperation(getByReportId(ids[0]), account);
return super.update(report, Condition.create().in("id", ids));
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean submitFromAllowToIssue(Long[] ids, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要提交的报告");
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要提交的报告");
EntrustReport report = new EntrustReport();
report.setStatus(EntrustReportStatusEnum.ISSUE);
report.setProgress(EntrustReportStatusEnum.ISSUE);
List<EntrustReportRelSample> relSamples = entrustReportRelSampleService.list(Condition.create().in("report_id",ids));
List<EntrustReportRelSample> relSamples = entrustReportRelSampleService.list(Condition.create().in("report_id", ids));
if (CollectionUtils.isNotEmpty(relSamples)){
List<Long> sampleIds = relSamples.stream().map(s->{
if (CollectionUtils.isNotEmpty(relSamples)) {
List<Long> sampleIds = relSamples.stream().map(s -> {
return s.getSampleId();
}).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(sampleIds)){
if (CollectionUtils.isNotEmpty(sampleIds)) {
EntrustSample sample = new EntrustSample();
sample.setStatus(EntrustSampleStatusEnum.REPORT_ISSUE);
sample.setProgress(EntrustSampleStatusEnum.REPORT_ISSUE);
entrustSampleService.update(sample,Condition.create().in("id",sampleIds));
entrustSampleService.update(sample, Condition.create().in("id", sampleIds));
}
}
return super.update(report, Condition.create().in("id",ids));
// 存在的状态路径时,方可进入处理操作
executeSubmitOperation(getByReportId(ids[0]), account);
return super.update(report, Condition.create().in("id", ids));
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean submitFromSendToJudge(Long[] ids, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要提交的报告");
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要提交的报告");
EntrustReport report = new EntrustReport();
report.setStatus(EntrustReportStatusEnum.END);
report.setProgress(EntrustReportStatusEnum.END);
List<EntrustReportRelSample> relSamples = entrustReportRelSampleService.list(Condition.create().in("report_id",ids));
List<EntrustReportRelSample> relSamples = entrustReportRelSampleService.list(Condition.create().in("report_id", ids));
if (CollectionUtils.isNotEmpty(relSamples)){
List<Long> sampleIds = relSamples.stream().map(s->{
if (CollectionUtils.isNotEmpty(relSamples)) {
List<Long> sampleIds = relSamples.stream().map(s -> {
return s.getSampleId();
}).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(sampleIds)){
if (CollectionUtils.isNotEmpty(sampleIds)) {
EntrustSample sample = new EntrustSample();
sample.setStatus(EntrustSampleStatusEnum.END);
sample.setProgress(EntrustSampleStatusEnum.END);
entrustSampleService.update(sample,Condition.create().in("id",sampleIds));
entrustSampleService.update(sample, Condition.create().in("id", sampleIds));
}
}
return super.update(report, Condition.create().in("id",ids));
// 存在的状态路径时,方可进入处理操作
executeSubmitOperation(getByReportId(ids[0]), account);
return super.update(report, Condition.create().in("id", ids));
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean submitReportIssue(Long[] ids, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要提交的报告");
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要提交的报告");
EntrustReport report = new EntrustReport();
report.setStatus(EntrustReportStatusEnum.END);
report.setProgress(EntrustReportStatusEnum.END);
List<EntrustReportRelSample> relSamples = entrustReportRelSampleService.list(Condition.create().in("report_id",ids));
List<EntrustReportRelSample> relSamples = entrustReportRelSampleService.list(Condition.create().in("report_id", ids));
if (CollectionUtils.isNotEmpty(relSamples)){
List<Long> sampleIds = relSamples.stream().map(s->{
if (CollectionUtils.isNotEmpty(relSamples)) {
List<Long> sampleIds = relSamples.stream().map(s -> {
return s.getSampleId();
}).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(sampleIds)){
if (CollectionUtils.isNotEmpty(sampleIds)) {
EntrustSample sample = new EntrustSample();
sample.setStatus(EntrustSampleStatusEnum.END);
sample.setProgress(EntrustSampleStatusEnum.END);
entrustSampleService.update(sample,Condition.create().in("id",sampleIds));
entrustSampleService.update(sample, Condition.create().in("id", sampleIds));
}
}
return super.update(report, Condition.create().in("id",ids));
// 存在的状态路径时,方可进入处理操作
executeSubmitOperation(getByReportId(ids[0]), account);
return super.update(report, Condition.create().in("id", ids));
}
@Override
public boolean backReportCheck(Long[] ids, String reason, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要退回的报告");
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要退回的报告");
EntrustReport report = new EntrustReport();
report.setStatus(EntrustReportStatusEnum.MAKING);
report.setProgress(EntrustReportStatusEnum.BACK_CHECK);
return super.update(report, Condition.create().in("id",ids));
rejectEntrustInfo(ids, reason, EntrustReportStatusEnum.MAKING, account);
return super.update(report, Condition.create().in("id", ids));
}
private void rejectEntrustInfo(Long[] reportIds, String reason, EntrustReportStatusEnum reportStatusEnum, Account account) {
List<EntrustReport> reports = baseMapper.selectBatchIds(Arrays.asList(reportIds));
List<Long> entrustIds = reports.stream().map(t -> t.getEntrustId()).collect(Collectors.toList());
List<Entrust> entrustList = entrustService.getBatchIds(entrustIds);
entrustList.stream().forEach(t -> {
if (StringUtils.isNotBlank(t.getStatusPath())) {
entrustService.rejectToPrevNode(t, reason, account);
} else {
rejectByReportStatus(t, reportStatusEnum, account);
}
});
}
/**
* 通过报告状态更改驳回的委托样品状态
*
* @param entrust
* @param reportStatus
* @param account
*/
private void rejectByReportStatus(Entrust entrust, EntrustReportStatusEnum reportStatus, Account account) {
EntrustSample entrustSample = new EntrustSample();
EntrustSampleStatusEnum sampleStatusEnum = null;
if (reportStatus == EntrustReportStatusEnum.MAKING) {
sampleStatusEnum = EntrustSampleStatusEnum.REPORT_MAKE;
} else if (reportStatus == EntrustReportStatusEnum.CHECK) {
sampleStatusEnum = EntrustSampleStatusEnum.REPORT_CHECK;
} else if (reportStatus == EntrustReportStatusEnum.ALLOW) {
sampleStatusEnum = EntrustSampleStatusEnum.REPORT_ALLOW;
} else if (reportStatus == EntrustReportStatusEnum.ISSUE) {
sampleStatusEnum = EntrustSampleStatusEnum.REPORT_ISSUE;
} else if (reportStatus == EntrustReportStatusEnum.SEND) {
sampleStatusEnum = EntrustSampleStatusEnum.REPORT_SEND;
}
if (null != sampleStatusEnum) {
entrustSample.setStatus(sampleStatusEnum);
entrustSample.setProgress(sampleStatusEnum);
entrustSampleService.update(entrustSample, Condition.create().eq("entrust_id", entrust.getId()));
}
}
@Override
public boolean backReportIssue(Long[] ids, String reason, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要退回的报告");
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要退回的报告");
EntrustReport report = new EntrustReport();
report.setStatus(EntrustReportStatusEnum.MAKING);
report.setProgress(EntrustReportStatusEnum.BACK_ISSUE);
return super.update(report, Condition.create().in("id",ids));
rejectEntrustInfo(ids, reason, EntrustReportStatusEnum.MAKING, account);
return super.update(report, Condition.create().in("id", ids));
}
@Override
public boolean backFromReportSendToAllow(Long[] ids, String reason, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要退回的报告");
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要退回的报告");
EntrustReport report = new EntrustReport();
report.setStatus(EntrustReportStatusEnum.ALLOW);
report.setProgress(EntrustReportStatusEnum.BACK_SEND);
return super.update(report, Condition.create().in("id",ids));
rejectEntrustInfo(ids, reason, EntrustReportStatusEnum.ALLOW, account);
return super.update(report, Condition.create().in("id", ids));
}
@Override
public boolean backFromReportAllowToCheck(Long[] ids, String reason, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要退回的报告");
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要退回的报告");
EntrustReport report = new EntrustReport();
report.setStatus(EntrustReportStatusEnum.CHECK);
report.setProgress(EntrustReportStatusEnum.BACK_ALLOW);
return super.update(report, Condition.create().in("id",ids));
rejectEntrustInfo(ids, reason, EntrustReportStatusEnum.CHECK, account);
return super.update(report, Condition.create().in("id", ids));
}
@Override
public boolean backFromReportIssueToAllow(Long[] ids, String reason, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要退回的报告");
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要退回的报告");
EntrustReport report = new EntrustReport();
report.setStatus(EntrustReportStatusEnum.ALLOW);
report.setProgress(EntrustReportStatusEnum.BACK_ISSUE);
return super.update(report, Condition.create().in("id",ids));
rejectEntrustInfo(ids, reason, EntrustReportStatusEnum.ALLOW, account);
return super.update(report, Condition.create().in("id", ids));
}
......
......@@ -16,6 +16,7 @@ import com.patzn.cloud.service.hmhj.enums.EntrustStatusEnum;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleVO;
import com.patzn.cloud.service.lims.common.CompareUtils;
import com.patzn.cloud.service.lims.hmhj.common.EntrustFlowUtils;
import com.patzn.cloud.service.lims.hmhj.common.HSSFWorkbookUtil;
import com.patzn.cloud.service.lims.hmhj.mapper.EntrustSampleItemMapper;
import com.patzn.cloud.service.lims.hmhj.original.*;
......@@ -131,9 +132,30 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
super.update(item, Condition.create().in("id", ids));
entrustSampleItemRecordService.record(ids, EntrustSampleItemStatusEnum.ALLOT.getDisplay(), EntrustSampleItemStatusEnum.TEST.getDisplay(), 0, "任务分配", account);
// 判定是否委托下的检测项目都已分配
Entrust entrust = getEntrustByItemId(ids[0]);
if(null != entrust && isAllocatedByEntrustId(entrust.getId()) && StringUtils.isNotBlank(entrust.getStatusPath())){
entrustService.submitToNextNode(entrust,account);
}
return true;
}
private Entrust getEntrustByItemId(Long itemId){
if(null == itemId){
return null;
}
EntrustSampleItem entrustSampleItem = baseMapper.selectById(itemId);
if(null == entrustSampleItem){
return null;
}
EntrustSample entrustSample = entrustSampleService.getById(entrustSampleItem.getEntrustSampleId());
if(null == entrustSample || null == entrustSample.getEntrustId()){
return null;
}
return entrustService.getById(entrustSample.getEntrustId());
}
@Override
public Page<EntrustSampleItemVO> pageByItemLeft(Page<EntrustSampleItemVO> page, EntrustSampleItemVO itemVO) {
......@@ -214,13 +236,20 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
// 提交为报告编制
EntrustSample sample = new EntrustSample().setStatus(EntrustSampleStatusEnum.REPORT_MAKE).setLid(account.getUserId()).setLtime(new Date());
entrustSampleService.update(sample, Condition.create().eq("entrust_id", entrustId));
// 提交到下一节点,可能是不更改状态
if(isConfigureStatusPath(entrust)){
entrustService.submitToNextNode(entrust,account);
return true;
}
// 样品操作日志
// 暂时不提供
// 修改委托信息
// entrust.setLid(account.getUserId()).setLtime(new Date()).setProgress(EntrustStatusEnum.TEST).setStatus(EntrustStatusEnum.TEST);
// entrustService.updateById(entrust);
entrust.setLid(account.getUserId()).setLtime(new Date()).setProgress(EntrustStatusEnum.TEST).setStatus(EntrustStatusEnum.TEST);
entrustService.updateById(entrust);
// 添加委托日志
entrustRecordService.record(new Long[]{entrustId}, EntrustStatusEnum.TEST.getDisplay(), EntrustStatusEnum.TEST.getDisplay(), 0, account, "提交至报告编制");
return true;
}
......@@ -691,5 +720,15 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
return baseMapper.selectVOListByIds(ids);
}
@Override
public boolean isAllocatedByEntrustId(Long entrustId){
if(null == entrustId || 0l== entrustId.longValue()){
return false;
}
return baseMapper.selectUnallocatedCountByEntrustId(entrustId) == 0;
}
private boolean isConfigureStatusPath(Entrust entrust){
return StringUtils.isBlank(entrust.getStatusPath()) ? false : true;
}
}
package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.toolkit.ArrayUtils;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.toolkit.StringUtils;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.service.hmhj.dto.SamplePrepareDTO;
......@@ -9,6 +11,7 @@ import com.patzn.cloud.service.hmhj.entity.*;
import com.patzn.cloud.service.hmhj.enums.*;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleBackupVO;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleVO;
import com.patzn.cloud.service.lims.hmhj.common.EntrustFlowUtils;
import com.patzn.cloud.service.lims.hmhj.mapper.EntrustSamplePrepareMapper;
import com.patzn.cloud.service.lims.hmhj.service.*;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
......@@ -21,12 +24,13 @@ import com.baomidou.mybatisplus.plugins.Page;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* 服务实现类
* 服务实现类
*
* @author wwd
* @since 2021-02-22
......@@ -63,23 +67,23 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp
@Transactional(rollbackFor = Exception.class)
@Override
public boolean makeEnd(SamplePrepareDTO dto, Account account) {
RestAssert.fail(null == dto,"请填写制备信息");
RestAssert.fail(null == dto, "请填写制备信息");
List<EntrustSampleVO> sampleVOList = dto.getSampleVOList();
RestAssert.fail(CollectionUtils.isEmpty(sampleVOList),"请填写制备信息");
RestAssert.fail(CollectionUtils.isEmpty(sampleVOList), "请填写制备信息");
List<EntrustSamplePrepare> savePrepare = new ArrayList<>();
List<Long> sampleIdsList = new ArrayList<>();
for (EntrustSampleVO vo: sampleVOList) {
EntrustSamplePrepare prepare = vo.convert(EntrustSamplePrepare.class);
prepare.setEntrustSampleId(vo.getEntrustSampleId());
prepare.setStatus(EntrustSamplePrepareStatusEnum.RECEIVE);
prepare.setProgress(EntrustSamplePrepareStatusEnum.RECEIVE);
prepare.setId(null);
savePrepare.add(prepare);
sampleIdsList.add(vo.getEntrustSampleId());
for (EntrustSampleVO vo : sampleVOList) {
EntrustSamplePrepare prepare = vo.convert(EntrustSamplePrepare.class);
prepare.setEntrustSampleId(vo.getEntrustSampleId());
prepare.setStatus(EntrustSamplePrepareStatusEnum.RECEIVE);
prepare.setProgress(EntrustSamplePrepareStatusEnum.RECEIVE);
prepare.setId(null);
savePrepare.add(prepare);
sampleIdsList.add(vo.getEntrustSampleId());
}
......@@ -88,16 +92,15 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp
Entrust entrust = entrustService.getById(sampleList.get(0).getEntrustId());
List<EntrustSampleBackup> backupList = entrustSampleBackupService.list(Condition.create().in("sample_id",sampleIdsList));
List<Long> haveSampleIds = backupList.stream().map(b->{
List<EntrustSampleBackup> backupList = entrustSampleBackupService.list(Condition.create().in("sample_id", sampleIdsList));
List<Long> haveSampleIds = backupList.stream().map(b -> {
return b.getSampleId();
}).collect(Collectors.toList());
List<EntrustSampleBackup> saveBackupList = new ArrayList<>();
for (EntrustSample sample:sampleList) {
if (haveSampleIds.contains(sample.getId())){
for (EntrustSample sample : sampleList) {
if (haveSampleIds.contains(sample.getId())) {
continue;
}
EntrustSampleBackup backup = new EntrustSampleBackup();
......@@ -112,30 +115,40 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp
saveBackupList.add(backup);
// 添加样品管理数据
EntrustSampleBackup manage = new EntrustSampleBackup();
BeanUtils.copyProperties(backup,manage);
BeanUtils.copyProperties(backup, manage);
// 类型:样品
manage.setType("YP");
manage.setStatus(EntrustSampleBackupStatusEnum.MANAGE_ING);
manage.setProgress(EntrustSampleBackupStatusEnum.MANAGE_ING);
saveBackupList.add(manage);
}
if (CollectionUtils.isNotEmpty(saveBackupList)){
if (CollectionUtils.isNotEmpty(saveBackupList)) {
entrustSampleBackupService.saveBatch(saveBackupList);
}
EntrustSample sample = new EntrustSample();
sample.setStatus(EntrustSampleStatusEnum.RECEIVE);
sample.setProgress(EntrustSampleStatusEnum.RECEIVE);
entrustSampleService.update(sample,Condition.create().in("id",sampleIdsList));
entrustSampleService.update(sample, Condition.create().in("id", sampleIdsList));
saveBatch(savePrepare);
List<EntrustSample> checkMakeList = entrustSampleService.list(Condition.create().eq("entrust_id",entrust.getId()).eq("status",EntrustSampleStatusEnum.DRAFT));
if (CollectionUtils.isEmpty(checkMakeList)){
Entrust updateEntrust = new Entrust();
updateEntrust.setStatus(EntrustStatusEnum.TEST);
updateEntrust.setProgress(EntrustStatusEnum.TEST);
updateEntrust.setId(entrust.getId());
entrustService.updateById(updateEntrust);
List<EntrustSample> checkMakeList = entrustSampleService.list(Condition.create().eq("entrust_id", entrust.getId()).eq("status", EntrustSampleStatusEnum.DRAFT));
if (CollectionUtils.isEmpty(checkMakeList) && StringUtils.isNotEmpty(entrust.getStatusPath())) {
// String flowStatus = entrust.getFlowStatus();
// String statusPath = entrust.getStatusPath();
// // 获取委托的状态
// EntrustStatusEnum nextStatus = EntrustFlowUtils.getNextStatus(flowStatus,statusPath);
// Entrust updateEntrust = new Entrust();
// updateEntrust.setStatus(EntrustStatusEnum.TEST);
// updateEntrust.setProgress(EntrustStatusEnum.TEST);
// if(null != nextStatus){
// updateEntrust.setStatus(nextStatus);
// updateEntrust.setProgress(nextStatus);
// }
// updateEntrust.setId(entrust.getId());
// entrustService.updateById(updateEntrust);
// 根据流程状态提交
entrustService.submitToNextNode(entrust, account);
}
......@@ -145,17 +158,17 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp
@Transactional(rollbackFor = Exception.class)
@Override
public boolean submitSampleReceive(Long[] ids, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择检测样品");
List<EntrustSamplePrepare> prepareList = super.list(Condition.create().in("id",ids));
RestAssert.fail(CollectionUtils.isEmpty(prepareList),"请选择检测样品");
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择检测样品");
List<EntrustSamplePrepare> prepareList = super.list(Condition.create().in("id", ids));
RestAssert.fail(CollectionUtils.isEmpty(prepareList), "请选择检测样品");
List<Long> sampleIdsList = new ArrayList<>();
for (EntrustSamplePrepare prepare:prepareList) {
if (null != prepare.getEntrustSampleId() && null != prepare.getGroupId() ){
for (EntrustSamplePrepare prepare : prepareList) {
if (null != prepare.getEntrustSampleId() && null != prepare.getGroupId()) {
EntrustSampleItem item = new EntrustSampleItem();
item.setStatus(EntrustSampleItemStatusEnum.ALLOT);
item.setProgress(EntrustSampleItemStatusEnum.ALLOT);
entrustSampleItemService.update(item,Condition.create().eq("entrust_sample_id",prepare.getEntrustSampleId()).eq("group_id",prepare.getGroupId()));
entrustSampleItemService.update(item, Condition.create().eq("entrust_sample_id", prepare.getEntrustSampleId()).eq("group_id", prepare.getGroupId()));
}
sampleIdsList.add(prepare.getEntrustSampleId());
}
......@@ -164,32 +177,72 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp
prepare.setStatus(EntrustSamplePrepareStatusEnum.TEST);
prepare.setStatus(EntrustSamplePrepareStatusEnum.TEST);
super.update(prepare,Condition.create().in("id",ids));
super.update(prepare, Condition.create().in("id", ids));
List<EntrustSamplePrepareStatusEnum> statusNotOkList = new ArrayList<>();
statusNotOkList.add(EntrustSamplePrepareStatusEnum.RECEIVE);
statusNotOkList.add(EntrustSamplePrepareStatusEnum.RECEIVE_OK);
List<EntrustSamplePrepare> preparesNotOkList =super.list(Condition.create().in("id",sampleIdsList).in("status",statusNotOkList));
List<EntrustSamplePrepare> preparesNotOkList = super.list(Condition.create().in("id", sampleIdsList).in("status", statusNotOkList));
List<Long> notOkSampleIds = preparesNotOkList.stream().map(i->{
List<Long> notOkSampleIds = preparesNotOkList.stream().map(i -> {
return i.getEntrustSampleId();
}).collect(Collectors.toList());
List<Long> changeList = new ArrayList<>();
for (Long id:sampleIdsList) {
if (!notOkSampleIds.contains(id)){
changeList.add(id);
}
for (Long id : sampleIdsList) {
if (!notOkSampleIds.contains(id)) {
changeList.add(id);
}
}
if (CollectionUtils.isNotEmpty(changeList)){
if (CollectionUtils.isNotEmpty(changeList)) {
EntrustSample sample = new EntrustSample();
sample.setStatus(EntrustSampleStatusEnum.TEST);
sample.setProgress(EntrustSampleStatusEnum.TEST);
entrustSampleService.update(sample,Condition.create().in("id",changeList));
entrustSampleService.update(sample, Condition.create().in("id", changeList));
}
if (CollectionUtils.isEmpty(notOkSampleIds)) {
EntrustSample entrustSample = entrustSampleService.getById(prepareList.get(0).getEntrustSampleId());
Entrust entrust = entrustService.getById(entrustSample.getEntrustId());
if (StringUtils.isNotEmpty(entrust.getStatusPath())) {
entrustService.submitToNextNode(entrust, account);
}
}
return true;
}
@Override
public boolean addOrUpdateToSetStatus(Long[] sampleIds, EntrustSamplePrepareStatusEnum statusEnum) {
List<EntrustSample> sampleList = entrustSampleService.getBatchIds(Arrays.asList(sampleIds));
if (CollectionUtils.isEmpty(sampleList)) {
return false;
}
// 默认为:待接收
statusEnum = null == statusEnum ? EntrustSamplePrepareStatusEnum.RECEIVE : statusEnum;
List<EntrustSamplePrepare> prepareList = list(Condition.create().in("entrust_sample_id", sampleIds).eq("deleted", 0));
// 判定是否为空,为空新建数据并设置状态保存,不为空更改状态更新
if (CollectionUtils.isEmpty(prepareList)) {
EntrustSamplePrepareStatusEnum finalStatusEnum = statusEnum;
prepareList = sampleList.stream().map(t -> {
EntrustSamplePrepare prepare = new EntrustSamplePrepare();
prepare.setEntrustSampleId(t.getId()).setStatus(finalStatusEnum)
//.setGroupId(1401433878527459329l).setGroupName("化验室")
.setProgress(finalStatusEnum)
.setCompanyId(t.getCompanyId()).setPrintNum(1).setMakeType("送检样");
return prepare;
}).collect(Collectors.toList());
saveBatch(prepareList);
} else {
EntrustSamplePrepare prepare = new EntrustSamplePrepare();
prepare.setStatus(statusEnum).setStatus(statusEnum);
update(prepare,Condition.create().in("entrust_sample_id",sampleIds).eq("deleted", 0));
}
return false;
}
}
......@@ -14,7 +14,7 @@ import com.patzn.cloud.service.hmhj.dto.QueryDTO;
import com.patzn.cloud.service.hmhj.dto.ReportDTO;
import com.patzn.cloud.service.hmhj.dto.StatsQueryDTO;
import com.patzn.cloud.service.hmhj.entity.*;
import com.patzn.cloud.service.hmhj.enums.ContractSampleStatusEnum;
import com.patzn.cloud.service.hmhj.enums.*;
import com.patzn.cloud.service.hmhj.vo.*;
import com.patzn.cloud.service.lims.common.StringHandleUtils;
import com.patzn.cloud.service.lims.hmhj.common.HSSFWorkbookUtil;
......@@ -92,6 +92,8 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
@Autowired
private IContractSampleService contractSampleService;
@Autowired
private IEntrustSamplePrepareService entrustSamplePrepareService;
@Autowired
private IContractSampleRecordService contractSampleRecordService;
@Override
......@@ -179,8 +181,12 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
return super.count(Condition.create().eq("entrust_id", id));
}
private void handleTotalData(AlTasteStatsVO vo, AlTasteStatsVO prevVO, Map<String, List<AlTasteStatsVO>> resultMap, boolean isLast) {
private Long getValSum(Long val1, Long val2) {
return (null == val1 ? 0l : val1) + (null == val2 ? 0l : val2);
}
private Double getValSum(Double val1, Double val2) {
return (null == val1 ? 0.0000 : val1) + (null == val2 ? 0.0000 : val2);
}
private AlTasteStatsVO getTotalData(List<AlTasteStatsVO> voList) {
......@@ -188,23 +194,23 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
bpStatsVO.setPlant("合计");
bpStatsVO.setBranch(voList.get(0).getBranch());
for (AlTasteStatsVO t : voList) {
bpStatsVO.setTotal((null == bpStatsVO.getTotal() ? 0l : bpStatsVO.getTotal()) + t.getTotal());
bpStatsVO.setSlotsNum((null == bpStatsVO.getSlotsNum() ? 0l : bpStatsVO.getSlotsNum()) + t.getSlotsNum());
bpStatsVO.setAl85Num((null == bpStatsVO.getAl85Num() ? 0l : bpStatsVO.getAl85Num()) + t.getAl85Num());
bpStatsVO.setAl85Per((null == bpStatsVO.getAl85Per() ? 0.0000 : bpStatsVO.getAl85Per()) + t.getAl85Per());
bpStatsVO.setAl85SlotsNum((null == bpStatsVO.getAl85SlotsNum() ? 0l : bpStatsVO.getAl85SlotsNum()) + t.getAl85SlotsNum());
bpStatsVO.setAl70Num((null == bpStatsVO.getAl70Num() ? 0l : bpStatsVO.getAl70Num()) + t.getAl70Num());
bpStatsVO.setAl70Per((null == bpStatsVO.getAl70Per() ? 0.0000 : bpStatsVO.getAl70Per()) + t.getAl70Per());
bpStatsVO.setAl70SlotsNum((null == bpStatsVO.getAl70SlotsNum() ? 0l : bpStatsVO.getAl70SlotsNum()) + t.getAl70SlotsNum());
bpStatsVO.setFe10Num((null == bpStatsVO.getFe10Num() ? 0l : bpStatsVO.getFe10Num()) + t.getFe10Num());
bpStatsVO.setFe10Per((null == bpStatsVO.getFe10Per() ? 0.0000 : bpStatsVO.getFe10Per()) + t.getFe10Per());
bpStatsVO.setFe10SlotsNum((null == bpStatsVO.getFe10SlotsNum() ? 0l : bpStatsVO.getFe10SlotsNum()) + t.getFe10SlotsNum());
bpStatsVO.setFe08Num((null == bpStatsVO.getFe08Num() ? 0l : bpStatsVO.getFe08Num()) + t.getFe08Num());
bpStatsVO.setFe08Per((null == bpStatsVO.getFe08Per() ? 0.0000 : bpStatsVO.getFe08Per()) + t.getFe08Per());
bpStatsVO.setFe08SlotsNum((null == bpStatsVO.getFe08SlotsNum() ? 0l : bpStatsVO.getFe08SlotsNum()) + t.getFe08SlotsNum());
bpStatsVO.setTotal(getValSum(bpStatsVO.getTotal(), t.getTotal()));
bpStatsVO.setSlotsNum(getValSum(bpStatsVO.getSlotsNum(), t.getSlotsNum()));
bpStatsVO.setAl85Num(getValSum(bpStatsVO.getAl85Num(), t.getAl85Num()));
bpStatsVO.setAl85Per(getValSum(bpStatsVO.getAl85Per(), t.getAl85Per()));
bpStatsVO.setAl85SlotsNum(getValSum(bpStatsVO.getAl85SlotsNum(), t.getAl85SlotsNum()));
bpStatsVO.setAl70Num(getValSum(bpStatsVO.getAl70Num(), t.getAl70Num()));
bpStatsVO.setAl70Per(getValSum(bpStatsVO.getAl70Per(), t.getAl70Per()));
bpStatsVO.setAl70SlotsNum(getValSum(bpStatsVO.getAl70SlotsNum(), t.getAl70SlotsNum()));
bpStatsVO.setFe10Num(getValSum(bpStatsVO.getFe10Num(), t.getFe10Num()));
bpStatsVO.setFe10Per(getValSum(bpStatsVO.getFe10Per(), t.getFe10Per()));
bpStatsVO.setFe10SlotsNum(getValSum(bpStatsVO.getFe10SlotsNum(), t.getFe10SlotsNum()));
bpStatsVO.setFe08Num(getValSum(bpStatsVO.getFe08Num(), t.getFe08Num()));
bpStatsVO.setFe08Per(getValSum(bpStatsVO.getFe08Per(), t.getFe08Per()));
bpStatsVO.setFe08SlotsNum(getValSum(bpStatsVO.getFe08SlotsNum(), t.getFe08SlotsNum()));
}
return bpStatsVO;
}
......@@ -274,11 +280,11 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
for (PMakeFeStatsVO vo : list) {
PMakeFeVO val = new PMakeFeVO(), per = new PMakeFeVO(), ltNum = new PMakeFeVO(), gtNum = new PMakeFeVO(), inNum = new PMakeFeVO();
val.setCVal(vo.getCVal()).setMnVal(vo.getMnVal()).setSiVal(vo.getSiVal()).setPVal(vo.getPVal()).setSVal(vo.getSVal());
per.setCVal(vo.getCPer()).setMnVal(vo.getMnPer()).setSiVal(vo.getSiPer()).setPVal(vo.getPPer()).setSVal(vo.getSPer());
ltNum.setCVal(vo.getCLtNum()).setMnVal(vo.getMnLtNum()).setSiVal(vo.getSiLtNum()).setPVal(vo.getPLtNum()).setSVal(vo.getSLtNum());
inNum.setCVal(vo.getCInNum()).setMnVal(vo.getMnInNum()).setSiVal(vo.getSiInNum()).setPVal(vo.getPInNum()).setSVal(vo.getSInNum());
gtNum.setCVal(vo.getCGtNum()).setMnVal(vo.getMnGtNum()).setSiVal(vo.getSiGtNum()).setPVal(vo.getPGtNum()).setSVal(vo.getSGtNum());
val.setCVal(vo.getCVal() + "").setMnVal(vo.getMnVal() + "").setSiVal(vo.getSiVal() + "").setPVal(vo.getPVal() + "").setSVal(vo.getSVal() + "");
per.setCVal(vo.getCPer() + "").setMnVal(vo.getMnPer() + "").setSiVal(vo.getSiPer() + "").setPVal(vo.getPPer() + "").setSVal(vo.getSPer() + "");
ltNum.setCVal(vo.getCLtNum() + "").setMnVal(vo.getMnLtNum() + "").setSiVal(vo.getSiLtNum() + "").setPVal(vo.getPLtNum() + "");
inNum.setCVal(vo.getCInNum() + "").setMnVal(vo.getMnInNum() + "").setSiVal(vo.getSiInNum() + "").setPVal(vo.getPInNum() + "").setSVal(vo.getSInNum() + "");
gtNum.setCVal(vo.getCGtNum() + "").setMnVal(vo.getMnGtNum() + "").setSiVal(vo.getSiGtNum() + "").setPVal(vo.getPGtNum() + "").setSVal(vo.getSGtNum() + "");
result.put(vo.getPeriod(), Lists.newArrayList(val, per, ltNum, inNum, gtNum));
}
......@@ -287,6 +293,138 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
}
@Override
public boolean updateSampleNextFlowInfo(Entrust entrust, EntrustFlowEnum nextFlowStatus, Account account) {
List<EntrustSample> sampleList = list(Condition.create().eq("entrust_id", entrust.getId()).eq("deleted", 0));
RestAssert.fail(CollectionUtils.isEmpty(sampleList), String.format("编号为【%s】委托下样品为空", entrust.getCode()));
Long[] sampleIds = sampleList.stream().map(t -> t.getId()).toArray(size -> new Long[size]);
//
EntrustSample updateSample = new EntrustSample();
EntrustSampleItem updateItem = new EntrustSampleItem();
EntrustSampleStatusEnum sampleStatus = null;
EntrustSampleItemStatusEnum itemStatus = null;
if (nextFlowStatus == EntrustFlowEnum.CHECK || nextFlowStatus == EntrustFlowEnum.MAKE) {
sampleStatus = EntrustSampleStatusEnum.DRAFT;
itemStatus = EntrustSampleItemStatusEnum.DRAFT;
} else if (nextFlowStatus == EntrustFlowEnum.RECEIVE) {
sampleStatus = EntrustSampleStatusEnum.RECEIVE;
itemStatus = EntrustSampleItemStatusEnum.DRAFT;
entrustSamplePrepareService.addOrUpdateToSetStatus(sampleIds,EntrustSamplePrepareStatusEnum.RECEIVE);
} else if (nextFlowStatus == EntrustFlowEnum.ALLOT) {
sampleStatus = EntrustSampleStatusEnum.TEST;
itemStatus = EntrustSampleItemStatusEnum.ALLOT;
entrustSamplePrepareService.addOrUpdateToSetStatus(sampleIds,EntrustSamplePrepareStatusEnum.RECEIVE_OK);
} else if (nextFlowStatus == EntrustFlowEnum.TEST) {
sampleStatus = EntrustSampleStatusEnum.TEST;
itemStatus = EntrustSampleItemStatusEnum.TEST;
entrustSamplePrepareService.addOrUpdateToSetStatus(sampleIds,EntrustSamplePrepareStatusEnum.TEST);
} else if (nextFlowStatus == EntrustFlowEnum.REPORT_MAKE) {
sampleStatus = EntrustSampleStatusEnum.REPORT_MAKE;
itemStatus = EntrustSampleItemStatusEnum.END;
} else if (nextFlowStatus == EntrustFlowEnum.REPORT_CHECK) {
sampleStatus = EntrustSampleStatusEnum.REPORT_CHECK;
itemStatus = EntrustSampleItemStatusEnum.END;
} else if (nextFlowStatus == EntrustFlowEnum.REPORT_ALLOW) {
sampleStatus = EntrustSampleStatusEnum.REPORT_ALLOW;
itemStatus = EntrustSampleItemStatusEnum.END;
} else if (nextFlowStatus == EntrustFlowEnum.REPORT_ISSUE) {
sampleStatus = EntrustSampleStatusEnum.REPORT_ISSUE;
itemStatus = EntrustSampleItemStatusEnum.END;
} else if (nextFlowStatus == EntrustFlowEnum.REPORT_SEND) {
sampleStatus = EntrustSampleStatusEnum.REPORT_SEND;
itemStatus = EntrustSampleItemStatusEnum.END;
} else if (nextFlowStatus == EntrustFlowEnum.QUALITY_JUDGE) {
sampleStatus = EntrustSampleStatusEnum.END;
itemStatus = EntrustSampleItemStatusEnum.END;
} else if (nextFlowStatus == EntrustFlowEnum.QUALITY_CHECK) {
sampleStatus = EntrustSampleStatusEnum.END;
itemStatus = EntrustSampleItemStatusEnum.END;
}
if (null != sampleStatus) {
updateSample.setStatus(sampleStatus);
update(updateSample, Condition.create().eq("entrust_id", entrust.getId()));
}
if (null != itemStatus) {
updateItem.setStatus(itemStatus);
entrustSampleItemService.update(updateItem, Condition.create().in("entrust_sample_id", sampleIds));
}
return false;
}
@Override
public boolean updateSamplePrevFlowInfo(Entrust entrust, EntrustFlowEnum prevFlowStatus, Account account) {
EntrustStatusEnum statusEnum = entrust.getStatus();
List<EntrustSample> sampleList = list(Condition.create().eq("entrust_id", entrust.getId()).eq("deleted", 0));
RestAssert.fail(CollectionUtils.isEmpty(sampleList), String.format("编号为【%s】委托下样品为空", entrust.getCode()));
Long[] sampleIds = sampleList.stream().map(t -> t.getId()).toArray(size -> new Long[size]);
//
EntrustSample updateSample = new EntrustSample();
EntrustSampleItem updateItem = new EntrustSampleItem();
EntrustSampleStatusEnum sampleStatus = null;
EntrustSampleItemStatusEnum itemStatus = null;
// 驳回样品状态
// DRAFT(1, "委托登记"),
// CHECK(3, "委托评审"),
// MAKE(4, "样品制备"),
// RECEIVE(5, "样品接收"),
// ALLOT(6, "任务分配"),
// TEST(7, "项目检测"),
// REPORT_MAKE(8, "报告编制"),
// REPORT_CHECK(9, "报告审核"),
// REPORT_ALLOW(10, "报告批准"),
// REPORT_ISSUE(11, "报告签发"),
// REPORT_SEND(12, "报告发放"),
// QUALITY_JUDGE(14, "质量判定"),
// 驳回检测项目状态
// DRAFT(0, "草稿"),
// ALLOT(10, "任务分配"),
// TEST(20, "检测中"),
// UPDATE_APPLY(15, "偏离申请"),
// CHECK(30, "数据复核"),
// AUDIT(40, "数据审核"),
// END(50, "检测完成"),
// BACK_CHECK(-30, "数据复核退回"),
// BACK_AUDIT(-40, "数据审核退回"),
// UPDATE_APPLY_BACK(-15, "偏离申请退回"),
// UPDATE_APPLY_PASS(-16, "偏离申请通过");
if (prevFlowStatus == EntrustFlowEnum.DRAFT || prevFlowStatus == EntrustFlowEnum.CHECK || prevFlowStatus == EntrustFlowEnum.MAKE) {
sampleStatus = EntrustSampleStatusEnum.DRAFT;
itemStatus = EntrustSampleItemStatusEnum.DRAFT;
} else if (prevFlowStatus == EntrustFlowEnum.RECEIVE) {
sampleStatus = EntrustSampleStatusEnum.RECEIVE;
itemStatus = EntrustSampleItemStatusEnum.DRAFT;
} else if (prevFlowStatus == EntrustFlowEnum.ALLOT || prevFlowStatus == EntrustFlowEnum.TEST) {
sampleStatus = EntrustSampleStatusEnum.TEST;
itemStatus = EntrustSampleItemStatusEnum.TEST;
} else if (prevFlowStatus == EntrustFlowEnum.REPORT_MAKE) {
sampleStatus = EntrustSampleStatusEnum.REPORT_MAKE;
itemStatus = EntrustSampleItemStatusEnum.END;
} else if (prevFlowStatus == EntrustFlowEnum.REPORT_CHECK) {
sampleStatus = EntrustSampleStatusEnum.REPORT_CHECK;
} else if (prevFlowStatus == EntrustFlowEnum.REPORT_ALLOW) {
sampleStatus = EntrustSampleStatusEnum.REPORT_ALLOW;
} else if (prevFlowStatus == EntrustFlowEnum.REPORT_ISSUE) {
sampleStatus = EntrustSampleStatusEnum.REPORT_ISSUE;
} else if (prevFlowStatus == EntrustFlowEnum.REPORT_SEND) {
sampleStatus = EntrustSampleStatusEnum.REPORT_SEND;
}
if (null != sampleStatus) {
updateSample.setStatus(sampleStatus);
update(updateSample, Condition.create().eq("entrust_id", entrust.getId()));
}
if (null != itemStatus) {
updateItem.setStatus(itemStatus);
entrustSampleItemService.update(updateItem, Condition.create().in("entrust_sample_id", sampleIds));
}
return false;
}
@Override
public boolean removeByIds(List<Long> ids) {
return baseMapper.deleteBatchIds(ids) > 0;
}
......
......@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.toolkit.IdWorker;
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.toolkit.DateUtils;
import com.patzn.cloud.commons.toolkit.StringHandleUtils;
import com.patzn.cloud.feign.base.client.SysOrgClient;
import com.patzn.cloud.feign.lims.hmhj.client.LmsChemicalCategoryClient;
......@@ -19,13 +18,13 @@ import com.patzn.cloud.service.hmhj.vo.EntrustSampleVO;
import com.patzn.cloud.service.hmhj.vo.EntrustVO;
import com.patzn.cloud.service.lims.chemical.entity.LmsChemicalCategory;
import com.patzn.cloud.service.lims.common.service.ILmsMsgService;
import com.patzn.cloud.service.lims.hmhj.common.EntrustFlowUtils;
import com.patzn.cloud.service.lims.hmhj.mapper.EntrustMapper;
import com.patzn.cloud.service.lims.hmhj.service.*;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.jfree.data.DataUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
......@@ -83,6 +82,7 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
public Page<Entrust> page(Page<Entrust> page, Entrust entrust) {
Wrapper wrapper = new EntityWrapper<>(entrust);
wrapper.orderBy("entrust_time", false);
wrapper.orderBy("code", false);
return this.page(page, wrapper);
}
......@@ -126,10 +126,10 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
case "电解质":
codeType = CodeTypeEnum.SAMPLE_DJZ_CODE;
break;
case "外委检测物":
case "外委检测物":
codeType = CodeTypeEnum.SAMPLE_WWJC_CODE;
break;
case "三级编码物":
case "三级编码物":
codeType = CodeTypeEnum.SAMPLE_YFL_CODE;
break;
default:
......@@ -137,31 +137,36 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
break;
}
String sampleCode = codeRuleService.getKey((Integer) codeType.getValue(), codeType.getName(), sample);
String sampleCode = null;
String replaceStr = "XX", inspectNo = "", secondCode = "", thirdCode = "";
// 若为外委检测和三级编码,则查询质检编号
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 (CollectionUtils.isNotEmpty(userInspectionCodeList)) {
inspectNo = userInspectionCodeList.get(0).getNo();
if ("已有编码物资".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 (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);
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);
}
}
if (StringUtils.isNotBlank(sampleCode)) {
......@@ -191,6 +196,12 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
if (null == entrust.getEntrustTime()) {
entrust.setEntrustTime(new Date());
}
// 配置初始状态
String flowStatus = EntrustFlowEnum.DRAFT.getName();
if (StringUtils.isNotBlank(entrust.getStatusPath())) {
flowStatus = entrust.getStatusPath().split("->")[0];
}
entrust.setFlowStatus(flowStatus);
if (saveEntrust(entrust)) {
if (CollectionUtils.isNotEmpty(sampleDTOList)) {
......@@ -269,13 +280,23 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要驳回的委托");
int count = super.count(Condition.create().in("id", ids).eq("status", EntrustStatusEnum.CHECK));
RestAssert.fail(ids.length != count, "请选择退回委托审核的委托");
Entrust entrust = new Entrust();
entrust.setStatus(EntrustStatusEnum.DRAFT);
entrust.setProgress(EntrustStatusEnum.BACK_CHECK);
if (update(entrust, Condition.create().in("id", ids))) {
entrustRecordService.record(ids, EntrustStatusEnum.CHECK.getDisplay(), EntrustStatusEnum.DRAFT.getDisplay(), 1, account, reason);
List<Entrust> entrustList = getBatchIds(Arrays.asList(ids));
boolean hasSendMessage = false;
for (Entrust e : entrustList) {
if (StringUtils.isNotBlank(e.getStatusPath())) {
rejectToPrevNode(e, reason, account);
hasSendMessage = true;
} else {
e.setStatus(EntrustStatusEnum.DRAFT);
e.setProgress(EntrustStatusEnum.BACK_CHECK);
updateById(e);
entrustRecordService.record(new Long[]{e.getId()}, EntrustStatusEnum.CHECK.getDisplay(), EntrustStatusEnum.DRAFT.getDisplay(), 1, account, reason);
}
}
if (!hasSendMessage) {
lmsMsgService.sendMsg("/hmhj/entrust_manage/entrust_register", "有委托从委托审核驳回,请及时查看退回原因并处理", "新的委托审核退回任务!", account, null);
}
return true;
}
......@@ -284,29 +305,50 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要提交到制备的委托");
int count = super.count(Condition.create().in("id", ids).eq("status", EntrustStatusEnum.CHECK));
RestAssert.fail(ids.length != count, "请选择委托审核的委托");
Entrust entrust = new Entrust();
entrust.setStatus(EntrustStatusEnum.MAKE);
entrust.setProgress(EntrustStatusEnum.MAKE);
if (update(entrust, Condition.create().in("id", ids))) {
entrustRecordService.record(ids, EntrustStatusEnum.CHECK.getDisplay(), EntrustStatusEnum.MAKE.getDisplay(), 0, account, "提交至样品待制备");
List<Entrust> entrustList = getBatchIds(Arrays.asList(ids));
boolean hasSendMessage = false;
for (Entrust e : entrustList) {
// 若存在路径,根据状态路径处理数据
if (StringUtils.isNotBlank(e.getStatusPath())) {
submitToNextNode(e, account);
hasSendMessage = true;
} else {
e.setStatus(EntrustStatusEnum.MAKE);
e.setProgress(EntrustStatusEnum.MAKE);
updateById(e);
entrustRecordService.record(new Long[]{e.getId()}, EntrustStatusEnum.CHECK.getDisplay(), EntrustStatusEnum.MAKE.getDisplay(), 0, account, "提交至样品待制备");
}
}
if (!hasSendMessage) {
lmsMsgService.sendMsg("/hmhj/sample_manage/sample_prepare", "有委托审核通过,请及时进行样品的制备", "新的样品制备任务!", account, null);
}
return true;
}
@Override
public boolean registerSubmitToMake(Long[] ids, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要提交到制备的委托");
int count = super.count(Condition.create().in("id", ids).eq("status", EntrustStatusEnum.DRAFT));
RestAssert.fail(ids.length != count, "请选择委托登记的委托");
Entrust entrust = new Entrust();
entrust.setStatus(EntrustStatusEnum.MAKE);
entrust.setProgress(EntrustStatusEnum.MAKE);
if (update(entrust, Condition.create().in("id", ids))) {
entrustRecordService.record(ids, EntrustStatusEnum.DRAFT.getDisplay(), EntrustStatusEnum.MAKE.getDisplay(), 0, account, "委托登记提交至样品待制备");
List<Entrust> entrustList = getBatchIds(Arrays.asList(ids));
boolean hasSendMessage = false;
for (Entrust e : entrustList) {
// 若存在路径,根据状态路径处理数据
if (StringUtils.isNotBlank(e.getStatusPath())) {
submitToNextNode(e, account);
hasSendMessage = true;
} else {
e.setStatus(EntrustStatusEnum.MAKE);
e.setProgress(EntrustStatusEnum.MAKE);
updateById(e);
entrustRecordService.record(new Long[]{e.getId()}, EntrustStatusEnum.DRAFT.getDisplay(), EntrustStatusEnum.MAKE.getDisplay(), 0, account, "委托登记提交至样品待制备");
}
}
if (!hasSendMessage) {
lmsMsgService.sendMsg("/hmhj/sample_manage/sample_prepare", "有委托登记提交至样品待制备,请及时进行样品的制备", "新的样品制备任务!", account, null);
}
return true;
}
......@@ -526,6 +568,14 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
return page.setRecords(baseMapper.selectVOList(page, entrust));
}
@Override
public Page<EntrustVO> pageEntrustByItemData(Page<EntrustVO> page, EntrustVO entrust) {
if (null == entrust.getItemStatus()) {
return page;
}
return page.setRecords(baseMapper.selectVOListByItem(page, entrust));
}
@Override
public Page<EntrustVO> pageEntrustByItemHis(Page<EntrustVO> page, EntrustVO entrust) {
......@@ -559,6 +609,14 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
return page.setRecords(baseMapper.selectVOList(page, entrust));
}
@Override
public Page<EntrustVO> pageEntrustByItemDataHis(Page<EntrustVO> page, EntrustVO entrust) {
if (CollectionUtils.isEmpty(entrust.getItemStatusEnumList())) {
return page;
}
return page.setRecords(baseMapper.selectVOListByItem(page, entrust));
}
@Override
public Page<EntrustVO> pageEntrustBySample(Page<EntrustVO> page, EntrustVO entrust) {
......@@ -804,114 +862,109 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
return page.setRecords(voList);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean submitToNextNode(Long[] ids, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要提交的委托");
List<Entrust> entrustList = super.list(Condition.create().in("id", ids).eq("deleted", 0));
RestAssert.fail(CollectionUtils.isEmpty(entrustList), "请选择要提交的委托");
for (Entrust e : entrustList) {
String statusPath = e.getStatusPath();
RestAssert.fail(StringUtils.isBlank(statusPath), String.format("编号为【%s】的委托,未配置状态信息!", e.getCode()));
String[] statusArr = statusPath.split("->");
EntrustStatusEnum status = e.getStatus();
int statusCode = status.getIntValue();
// 获取状态所处于状态路径的位置
int index = ArrayUtils.indexOf(statusArr, statusCode + "");
// 判定是否未最后一个状态
RestAssert.fail(index == statusArr.length - 1, String.format("编号为【%s】的委托此刻状态为最终状态,无法提交到下一步流程!", e.getCode()));
EntrustStatusEnum nextStatus = EntrustStatusEnum.valueOf(statusArr[index + 1]);
Entrust entrust = new Entrust();
entrust.setStatus(nextStatus);
entrust.setProgress(nextStatus);
if (update(entrust, Condition.create().in("id", ids))) {
// 判定当前状态(赋值后下一的状态)为何种状态
if (nextStatus == EntrustStatusEnum.OUT_INPUT) {
entrustRecordService.record(ids, status.getDisplay(), EntrustStatusEnum.OUT_INPUT.getDisplay(), 0, account, "提交至外委数据录入");
lmsMsgService.sendMsg("/hmhj/accept_manage/sub_input", "有外委登记提交过来,请及时填写外委数据", "新的委托外委数据录入任务!", account, null);
} else if (nextStatus == EntrustStatusEnum.CHECK) {
entrustRecordService.record(ids, status.getDisplay(), EntrustStatusEnum.CHECK.getDisplay(), 0, account, "提交至委托审核");
lmsMsgService.sendMsg("/hmhj/entrust_manage/entrust_review", "有委托从委托登记提交过来,请及时审核", "新的委托审核任务!", account, null);
} else if (nextStatus == EntrustStatusEnum.MAKE) {
// 判定当前状态是哪一个状态
if (status == EntrustStatusEnum.DRAFT) {
entrustRecordService.record(ids, status.getDisplay(), EntrustStatusEnum.MAKE.getDisplay(), 0, account, "委托登记提交至样品待制备");
lmsMsgService.sendMsg("/hmhj/sample_manage/sample_prepare", "有委托登记提交至样品待制备,请及时进行样品的制备", "新的样品制备任务!", account, null);
} else if (status == EntrustStatusEnum.CHECK) {
entrustRecordService.record(ids, status.getDisplay(), EntrustStatusEnum.MAKE.getDisplay(), 0, account, "提交至样品待制备");
lmsMsgService.sendMsg("/hmhj/sample_manage/sample_prepare", "有委托审核通过,请及时进行样品的制备", "新的样品制备任务!", account, null);
}
submitToNextNode(e, account);
}
return true;
}
}
// else if (nextStatus == EntrustStatusEnum.TEST) {
// 此步骤实现是在提交检测处理时实现
// 验证是否全部提交检测项目,若提交全部样品下的检测项目,则提交委托信息
// 提交时,仍需要根据状态路径更改状态
// }
else if (nextStatus == EntrustStatusEnum.QUALITY_CHECK) {
EntrustSample entrustSample = new EntrustSample();
entrustSample.setStatus(EntrustSampleStatusEnum.END);
entrustSample.setProgress(EntrustSampleStatusEnum.END);
entrustSampleService.update(entrustSample, Condition.create().in("entrust_id", ids));
entrustRecordService.record(ids, EntrustStatusEnum.OUT_INPUT.getDisplay(), EntrustStatusEnum.QUALITY_CHECK.getDisplay(), 0, account, "外委数据录入提交至质量判定");
lmsMsgService.sendMsg("/hmhj/quality_manage/quality_decide", "有外委数据录入提交过来进行质量判定,请及时进行质量判定", "新的质量判定任务!", account, null);
}
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean submitToNextNode(Entrust entrust, Account account) {
String statusPath = entrust.getStatusPath(), flowStatus = entrust.getFlowStatus();
RestAssert.fail(StringUtils.isBlank(statusPath), String.format("编号为【%s】的委托,未配置流程状态路径信息!", entrust.getCode()));
// 只有初始状态才进行赋值
if (StringUtils.isBlank(flowStatus) && entrust.getStatus() == EntrustStatusEnum.DRAFT) {
flowStatus = EntrustFlowEnum.DRAFT.getName();
}
RestAssert.fail(StringUtils.isBlank(flowStatus), String.format("编号为【%s】的委托,未配置流程状态信息!", entrust.getCode()));
EntrustFlowEnum nextFlowStatus = EntrustFlowUtils.getNextFlowStatus(flowStatus, statusPath);
EntrustStatusEnum nextStatus = EntrustFlowUtils.getStatus(nextFlowStatus);
RestAssert.fail(null == nextStatus, String.format("编号为【%s】的委托,未配置下一流程状态信息!", entrust.getCode()));
// 当前委托状态
EntrustStatusEnum status = entrust.getStatus();
// 是否特殊需求
boolean isSpecAsk = null == entrust.getSpecialAsk() ? false : ("是".equals(entrust.getSpecialAsk()));
// 若为特殊需求,必须要走评审
String uri = "";
if (isSpecAsk || nextStatus == EntrustStatusEnum.CHECK) {
uri = "/hmhj/entrust_manage/entrust_review";
} else if (nextStatus == EntrustStatusEnum.MAKE) {
uri = "/hmhj/sample_manage/sample_prepare";
} else if (nextStatus == EntrustStatusEnum.OUT_INPUT) {
uri = "/hmhj/accept_manage/sub_input";
} else if (nextStatus == EntrustStatusEnum.QUALITY_CHECK) {
uri = "/hmhj/quality_manage/quality_decide";
}
// 处理样品以及检测项目的流程状态
entrustSampleService.updateSampleNextFlowInfo(entrust, nextFlowStatus, account);
entrust.setStatus(nextStatus);
entrust.setProgress(nextStatus);
entrust.setFlowStatus(nextFlowStatus.getName());
updateById(entrust);
//
String remark = "提交至" + nextFlowStatus.getDisplay(),
title = String.format("新的%s任务!", nextFlowStatus.getDisplay()),
content = String.format("有%s提交过来,请及时%s", EntrustFlowEnum.convert(flowStatus).getDisplay(), nextFlowStatus.getDisplay());
entrustRecordService.record(new Long[]{entrust.getId()}, status.getDisplay(), nextStatus.getDisplay(), 0, account, remark);
if (StringUtils.isNotBlank(uri)) {
lmsMsgService.sendMsg(uri, content, title, account, null);
}
return true;
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean rejectToPrevNode(Long id, String reason, Account account) {
RestAssert.fail(null == id, "请选择要驳回的委托");
Entrust e = super.getById(id);
RestAssert.fail(null == e, "请选择要驳回的委托");
String statusPath = e.getStatusPath();
RestAssert.fail(StringUtils.isBlank(statusPath), String.format("编号为【%s】的委托,未配置状态信息!", e.getCode()));
String[] statusArr = statusPath.split("->");
EntrustStatusEnum status = e.getStatus();
int statusCode = status.getIntValue();
// 获取状态所处于状态路径的位置
int index = ArrayUtils.indexOf(statusArr, statusCode + "");
// 判定是否为第一个状态
RestAssert.fail(index == statusArr.length - 1, String.format("编号为【%s】的委托此刻状态为最初始状态,无法驳回到上一步流程!", e.getCode()));
EntrustStatusEnum prevStatus = EntrustStatusEnum.valueOf(statusArr[index - 1]);
Entrust entrust = new Entrust();
entrust.setStatus(prevStatus);
entrust.setProgress(EntrustStatusEnum.BACK_CHECK);
Long[] ids = new Long[]{id};
if (update(entrust, Condition.create().eq("id", id))) {
//
entrustRecordService.record(ids, status.getDisplay(), prevStatus.getDisplay(), 1, account, reason);
// 判定当前状态(退回后上一状态)为何种状态
if (prevStatus == EntrustStatusEnum.DRAFT) {
lmsMsgService.sendMsg("/hmhj/entrust_manage/entrust_register", "有委托从委托审核驳回,请及时查看退回原因并处理", "新的委托审核退回任务!", account, null);
} else if (prevStatus == EntrustStatusEnum.OUT_DRAFT) {
lmsMsgService.sendMsg("/hmhj/entrust_manage/entrust_register", "有委托从委托审核驳回,请及时查看退回原因并处理", "新的委托审核退回任务!", account, null);
} else if (prevStatus == EntrustStatusEnum.OUT_INPUT) {
} else if (prevStatus == EntrustStatusEnum.CHECK) {
} else if (prevStatus == EntrustStatusEnum.MAKE) {
Entrust entrust = super.getById(id);
return rejectToPrevNode(entrust, reason, account);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean rejectToPrevNode(Entrust entrust, String reason, Account account) {
RestAssert.fail(null == entrust, "请选择要驳回的委托");
String statusPath = entrust.getStatusPath(), flowStatus = entrust.getFlowStatus();
// 为空不进行下一步处理
if (StringUtils.isBlank(statusPath)) {
return false;
}
RestAssert.fail(StringUtils.isBlank(statusPath), String.format("编号为【%s】的委托,未配置流程状态路径信息!", entrust.getCode()));
EntrustFlowEnum prevFlowStatus = EntrustFlowUtils.getPrevFlowStatus(flowStatus, statusPath);
EntrustStatusEnum prevStatus = EntrustFlowUtils.getStatus(prevFlowStatus);
RestAssert.fail(null == prevStatus, String.format("编号为【%s】的委托,未配置上一流程状态信息!", entrust.getCode()));
// 当前委托状态
EntrustStatusEnum status = entrust.getStatus();
String uri = "";
if (prevStatus == EntrustStatusEnum.DRAFT) {
uri = "/hmhj/entrust_manage/entrust_register";
} else if (prevStatus == EntrustStatusEnum.CHECK) {
} else if (prevStatus == EntrustStatusEnum.QUALITY_CHECK) {
} else if (prevStatus == EntrustStatusEnum.MAKE) {
} else if (prevStatus == EntrustStatusEnum.OUT_INPUT) {
}
} else if (prevStatus == EntrustStatusEnum.QUALITY_CHECK) {
uri = "/hmhj/quality_manage/quality_decide";
}
entrust.setStatus(prevStatus);
entrust.setProgress(EntrustStatusEnum.BACK_CHECK);
entrust.setFlowStatus(prevFlowStatus.getName());
updateById(entrust);
// 更新委托样品信息
entrustSampleService.updateSamplePrevFlowInfo(entrust, prevFlowStatus, account);
String title = String.format("新的%s任务!", prevFlowStatus.getDisplay()),
content = String.format("有%s驳回过来,请及时%s", EntrustFlowEnum.convert(flowStatus).getDisplay(), prevFlowStatus.getDisplay());
entrustRecordService.record(new Long[]{entrust.getId()}, status.getDisplay(), prevStatus.getDisplay(), 1, account, reason);
if (StringUtils.isNotBlank(uri)) {
lmsMsgService.sendMsg(uri, content, title, account, null);
}
return true;
}
......
package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.controller.LoginHelper;
import com.patzn.cloud.service.hmhj.entity.Entrust;
import com.patzn.cloud.service.hmhj.entity.EntrustSample;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleStatusEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustStatusEnum;
import com.patzn.cloud.service.lims.collection.entity.LmsOriginalRecordInfo;
import com.patzn.cloud.service.lims.hmhj.mapper.LmsOriginalRecordInfoMapper;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustSampleItemService;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustSampleService;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustService;
import com.patzn.cloud.service.lims.hmhj.service.ILmsOriginalRecordInfoService;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 原始记录解析后的数据存储表 服务实现类
*
* @author meazty
* @since 2021-07-04
*/
@Service
public class LmsOriginalRecordInfoServiceImpl extends BaseServiceImpl<LmsOriginalRecordInfoMapper, LmsOriginalRecordInfo> implements ILmsOriginalRecordInfoService {
@Autowired
private IEntrustService entrustService;
@Autowired
private IEntrustSampleService entrustSampleService;
@Autowired
private IEntrustSampleItemService entrustSampleItemService;
@Override
public Page<LmsOriginalRecordInfo> page(Page<LmsOriginalRecordInfo> page, LmsOriginalRecordInfo lmsOriginalRecordInfo) {
Wrapper wrapper = new EntityWrapper<>(lmsOriginalRecordInfo);
return this.page(page, wrapper);
}
@Override
public boolean removeByIds(List<Long> ids) {
return baseMapper.deleteBatchIds(ids) > 0;
}
/**
* 生成从委托到原始记录相关数据
*
* @return
*/
@Override
public boolean generateOriginalRelData() {
Account account = LoginHelper.getAccount();
// 查询未生成的委托数据
List<LmsOriginalRecordInfo> entrustList = baseMapper.selectUnGeneratedEntrustData();
if (CollectionUtils.isNotEmpty(entrustList)) {
List<Entrust> entrusts = entrustList.stream().map(t -> {
return new Entrust().setStatus(EntrustStatusEnum.TEST).setProgress(EntrustStatusEnum.TEST)
.setCode(t.getContractCode()).setCompanyId(account.getCompanyId()).setUid(account.getUserId());
}).collect(Collectors.toList());
entrustService.saveBatch(entrusts);
}
// 查询未生成的样品数据
List<LmsOriginalRecordInfo> sampleList = baseMapper.selectUnGeneratedSampleData();
if (CollectionUtils.isNotEmpty(sampleList)) {
List<EntrustSample> samples = sampleList.stream().map(t -> {
return new EntrustSample().setStatus(EntrustSampleStatusEnum.TEST).setProgress(EntrustSampleStatusEnum.TEST)
.setCode(t.getSampleNum()).setCompanyId(account.getCompanyId()).setUid(account.getUserId());
}).collect(Collectors.toList());
List<Entrust> entrusts = entrustService.list(Condition.create().setSqlSelect(new String[]{"id","code"})
.eq("status", EntrustStatusEnum.TEST.getValue())
.eq("deleted", 0));
entrustSampleService.saveBatch(samples);
}
return false;
}
}
package com.patzn.cloud.service.lims.schedule;
import com.patzn.cloud.service.lims.hmhj.service.ILmsOriginalRecordInfoService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class LmsOriginalRecordInfoSchedule {
private Logger logger = LoggerFactory.getLogger(LmsOriginalRecordInfoSchedule.class);
@Autowired
private ILmsOriginalRecordInfoService lmsOriginalRecordInfoService;
/**
* 每隔5分钟,执行生成委托->样品->检测项目->原始记录数据
*/
@Scheduled(cron = "0 */50 * * * ?")
public void execute(){
logger.info("------每隔5分钟,执行生成委托->样品->检测项目->原始记录数据------");
// lmsOriginalRecordInfoService.generateOriginalRelData();
}
}
......@@ -58,6 +58,38 @@
order by entrust_time desc
</select>
<select id="selectVOListByItem" resultType="com.patzn.cloud.service.hmhj.vo.EntrustVO">
SELECT distinct e.* FROM
entrust e,entrust_sample s,entrust_sample_item i
WHERE e.deleted = 0 and s.deleted = 0 and i.deleted = 0
and s.entrust_id = e.id and i.entrust_sample_id = s.id
<if test="null!=vo.itemStatus">
and i.status = #{vo.itemStatus}
</if>
<if test="null!=vo.itemStatusEnumList">
AND i.status IN
<foreach collection="vo.itemStatusEnumList" index="index" item="status" open="(" separator="," close=")">
#{status}
</foreach>
</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>
<if test="null!=vo.client">
AND e.client LIKE CONCAT('%',#{vo.client},'%')
</if>
<if test="null!=vo.code">
AND e.code LIKE CONCAT('%',#{vo.code},'%')
</if>
<if test="null!=vo.testSide">
AND e.test_side LIKE CONCAT('%',#{vo.testSide},'%')
</if>
order by e.entrust_time desc,e.code desc
</select>
<select id="selectEntrustProgressList" resultType="com.patzn.cloud.service.hmhj.vo.EntrustVO">
SELECT id,code,client,client_tel,entrust_time,assignor,test_side,status,progress,
......
......@@ -315,4 +315,12 @@
WHERE i.deleted = 0 AND s.deleted = 0
AND s.entrust_id = #{entrustId}
</select>
<select id="selectUnallocatedCountByEntrustId" resultType="int">
select count(1) from entrust_sample_item i
join entrust_sample s ON i.entrust_sample_id = s.ID
where i.deleted = 0 AND s.deleted = 0
and i.status = 0
AND s.entrust_id = #{entrustId}
</select>
</mapper>
<?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.patzn.cloud.service.lims.hmhj.mapper.LmsOriginalRecordInfoMapper">
<!--获取未生成的委托数据-->
<select id="selectUnGeneratedEntrustData"
resultType="com.patzn.cloud.service.lims.collection.entity.LmsOriginalRecordInfo">
select o.file_id,o.contract_code from lms_original_record_info o
where o.deleted = 0
and o.contract_code is not null
and not exists (select 1 from entrust e where e.deleted = 0 and e.code = o.contract_code)
group by o.file_id, o.contract_code order by o.file_id
</select>
<select id="selectUnGeneratedSampleData"
resultType="com.patzn.cloud.service.lims.collection.entity.LmsOriginalRecordInfo">
select o.file_id,o.contract_code,o.sample_num from lms_original_record_info o
where o.deleted = 0
and o.contract_code is not null
and o.sample_num is not null
and not exists (
select 1 from entrust e,entrust_sample s
where
e.deleted = 0
and e.code = o.contract_code
and s.entrust_id = e.id
and s.code = o.sample_num
)
group by o.file_id, o.contract_code, o.sample_num order by o.file_id
</select>
</mapper>
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