Commit 96edaae3 by lijingjing

添加发送ERP数据,覆盖原铝重取数据;

parent f032ea05
...@@ -9,14 +9,15 @@ import com.patzn.cloud.commons.api.RestConstants; ...@@ -9,14 +9,15 @@ import com.patzn.cloud.commons.api.RestConstants;
import com.patzn.cloud.commons.api.RestResult; import com.patzn.cloud.commons.api.RestResult;
import com.patzn.cloud.commons.controller.ServiceController; import com.patzn.cloud.commons.controller.ServiceController;
import com.patzn.cloud.service.hmhj.dto.QueryDTO; import com.patzn.cloud.service.hmhj.dto.QueryDTO;
import com.patzn.cloud.service.hmhj.dto.RangeStatsQueryDTO;
import com.patzn.cloud.service.hmhj.dto.SampleItemDTO; import com.patzn.cloud.service.hmhj.dto.SampleItemDTO;
import com.patzn.cloud.service.hmhj.dto.SlotQueryDTO;
import com.patzn.cloud.service.hmhj.entity.EntrustSampleItem; import com.patzn.cloud.service.hmhj.entity.EntrustSampleItem;
import com.patzn.cloud.service.hmhj.entity.ItemDeviate; import com.patzn.cloud.service.hmhj.entity.ItemDeviate;
import com.patzn.cloud.service.hmhj.entity.OriginalRecord; import com.patzn.cloud.service.hmhj.entity.OriginalRecord;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleItemStatusEnum; import com.patzn.cloud.service.hmhj.enums.EntrustSampleItemStatusEnum;
import com.patzn.cloud.service.hmhj.vo.*; import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO;
import com.patzn.cloud.service.hmhj.vo.ItemVO;
import com.patzn.cloud.service.hmhj.vo.SampleItemVO;
import com.patzn.cloud.service.hmhj.vo.TesterWorkloadStatsVO;
import com.patzn.cloud.service.lims.base.entity.LmsUserRelGroup; import com.patzn.cloud.service.lims.base.entity.LmsUserRelGroup;
import com.patzn.cloud.service.lims.base.vo.LmsUserRelGroupVO; import com.patzn.cloud.service.lims.base.vo.LmsUserRelGroupVO;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustSampleItemService; import com.patzn.cloud.service.lims.hmhj.service.IEntrustSampleItemService;
...@@ -25,9 +26,9 @@ import io.swagger.annotations.Api; ...@@ -25,9 +26,9 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -42,10 +43,10 @@ import java.util.Map; ...@@ -42,10 +43,10 @@ import java.util.Map;
@RequestMapping("/v1/entrust_sample_item") @RequestMapping("/v1/entrust_sample_item")
public class EntrustSampleItemController extends ServiceController { public class EntrustSampleItemController extends ServiceController {
@Autowired @Resource
private IEntrustSampleItemService entrustSampleItemService; private IEntrustSampleItemService entrustSampleItemService;
@Autowired @Resource
private UserInfoServiceImpl userInfoService; private UserInfoServiceImpl userInfoService;
...@@ -648,7 +649,7 @@ public class EntrustSampleItemController extends ServiceController { ...@@ -648,7 +649,7 @@ public class EntrustSampleItemController extends ServiceController {
@ApiOperation("样品检测项目统计查询") @ApiOperation("样品检测项目统计查询")
@PostMapping("/sample_item_stats_query") @PostMapping("/sample_item_stats_query")
public RestResult<Map> getSampleItemStatsQuery(SampleItemDTO sampleItemDTO) { public RestResult<Map<String, Object>> getSampleItemStatsQuery(SampleItemDTO sampleItemDTO) {
return success(entrustSampleItemService.getSampleItemStatsQuery(sampleItemDTO)); return success(entrustSampleItemService.getSampleItemStatsQuery(sampleItemDTO));
} }
...@@ -731,12 +732,10 @@ public class EntrustSampleItemController extends ServiceController { ...@@ -731,12 +732,10 @@ public class EntrustSampleItemController extends ServiceController {
} }
@ApiOperation(value = "模拟测试发送数据到ERP", notes = "模拟测试发送数据到ERP") @ApiOperation(value = "模拟测试发送数据到ERP", notes = "模拟测试发送数据到ERP")
@PostMapping("/send_data") @PostMapping("/send_erp_data")
@Login(action = Action.Skip) @Login(action = Action.Skip)
public RestResult<SampleItemVO> sendData(@RequestBody SampleItemVO itemVO) { public RestResult<Boolean> sendErpData(@RequestBody List<Long> entrustIds) {
logger.error(itemVO.getSample_code()); return success(entrustSampleItemService.sendErpData(entrustIds));
logger.error(itemVO.getBrand());
return RestResult.ok(itemVO);
} }
@ApiOperation(value = "根据检测项目ID退回原始记录", notes = "根据检测项目ID退回原始记录") @ApiOperation(value = "根据检测项目ID退回原始记录", notes = "根据检测项目ID退回原始记录")
...@@ -744,5 +743,4 @@ public class EntrustSampleItemController extends ServiceController { ...@@ -744,5 +743,4 @@ public class EntrustSampleItemController extends ServiceController {
public RestResult<Boolean> backUserItem(@RequestParam("ids") Long[] ids) { public RestResult<Boolean> backUserItem(@RequestParam("ids") Long[] ids) {
return success(entrustSampleItemService.backUserItem(ids)); return success(entrustSampleItemService.backUserItem(ids));
} }
} }
...@@ -46,6 +46,7 @@ public class ItemComparisonController extends ServiceController { ...@@ -46,6 +46,7 @@ public class ItemComparisonController extends ServiceController {
}) })
@PostMapping("/page") @PostMapping("/page")
public RestResult<Page<ItemComparison>> getPage(SlotQueryDTO queryDTO) { public RestResult<Page<ItemComparison>> getPage(SlotQueryDTO queryDTO) {
return success(itemComparisonService.page(getPage(), queryDTO)); return success(itemComparisonService.page(getPage(), queryDTO));
} }
......
...@@ -76,7 +76,7 @@ public interface EntrustSampleItemIndexMapper extends BatchMapper<EntrustSampleI ...@@ -76,7 +76,7 @@ public interface EntrustSampleItemIndexMapper extends BatchMapper<EntrustSampleI
* @param sampleIds the sample ids * @param sampleIds the sample ids
* @return the list * @return the list
*/ */
List<Map<String, Object>> selectSampleItemIndex(@Param("sampleIds") List<Long> sampleIds); List<Map<String, Object>> selectSampleItemIndex(@Param("entrustIds") List<Long> entrustIds,@Param("sampleIds") List<Long> sampleIds);
/** /**
* Physical delete by item ids integer. * Physical delete by item ids integer.
......
...@@ -33,5 +33,5 @@ public interface ItemComparisonMapper extends BatchMapper<ItemComparison> { ...@@ -33,5 +33,5 @@ public interface ItemComparisonMapper extends BatchMapper<ItemComparison> {
* @param slotQueryDTO the slot query dto * @param slotQueryDTO the slot query dto
* @return the list * @return the list
*/ */
List<ItemComparison> selectDataPage(RowBounds rowBounds, SlotQueryDTO slotQueryDTO); List<ItemComparison> selectDataPage(RowBounds rowBounds, @Param("vo") SlotQueryDTO slotQueryDTO);
} }
...@@ -39,7 +39,7 @@ public interface IEntrustSampleItemIndexService extends IBaseService<EntrustSamp ...@@ -39,7 +39,7 @@ public interface IEntrustSampleItemIndexService extends IBaseService<EntrustSamp
Page<EntrustSampleItemIndexVO> pageIndexWithItem(Page<EntrustSampleItemIndexVO> page, EntrustSampleItemIndexVO entrustSampleItemIndexVO); Page<EntrustSampleItemIndexVO> pageIndexWithItem(Page<EntrustSampleItemIndexVO> page, EntrustSampleItemIndexVO entrustSampleItemIndexVO);
List<Map<String,Object>> listSampleItemIndex(List<Long> sampleIds); List<Map<String,Object>> listSampleItemIndex(List<Long> entrustIds,List<Long> sampleIds);
boolean physicalDeleteByItemIds(List<Long> itemIds); boolean physicalDeleteByItemIds(List<Long> itemIds);
......
...@@ -140,4 +140,5 @@ public interface IEntrustSampleItemService extends IBaseService<EntrustSampleIte ...@@ -140,4 +140,5 @@ public interface IEntrustSampleItemService extends IBaseService<EntrustSampleIte
boolean deletePhysicalByEntrustIds(List<Long> ids); boolean deletePhysicalByEntrustIds(List<Long> ids);
Boolean sendErpData(List<Long> entrustIds);
} }
package com.patzn.cloud.service.lims.hmhj.service; package com.patzn.cloud.service.lims.hmhj.service;
import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.service.IBaseService; import com.patzn.cloud.commons.service.IBaseService;
import com.patzn.cloud.service.hmhj.dto.SlotQueryDTO; import com.patzn.cloud.service.hmhj.dto.SlotQueryDTO;
import com.patzn.cloud.service.hmhj.entity.ItemComparison; import com.patzn.cloud.service.hmhj.entity.ItemComparison;
...@@ -40,5 +41,5 @@ public interface IItemComparisonService extends IBaseService<ItemComparison> { ...@@ -40,5 +41,5 @@ public interface IItemComparisonService extends IBaseService<ItemComparison> {
* @param queryDTO the comparison queryDTO * @param queryDTO the comparison queryDTO
* @return the boolean * @return the boolean
*/ */
boolean saveCompareDataBatch(SlotQueryDTO queryDTO); boolean saveCompareDataBatch(SlotQueryDTO queryDTO, Account account);
} }
...@@ -346,18 +346,25 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe ...@@ -346,18 +346,25 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
protected void generateCompareItems(Long[] ids, Account account) { protected void generateCompareItems(Long[] ids, Account account) {
if (ArrayUtils.isEmpty(ids)) { if (ArrayUtils.isEmpty(ids)) {
logger.error("report ids is empty ");
return; return;
} }
EntrustSample sample = entrustSampleService.getById(ids[0]); List<EntrustReportRelSample> relSamples = entrustReportRelSampleService.list(Condition.create().in("report_id", ids));
logger.error("输出样品:{} ", sample.getName()); if (CollectionUtils.isEmpty(relSamples)) {
logger.error("No rel samples found");
return;
}
List<Long> sampleIds = relSamples.stream().map(EntrustReportRelSample::getSampleId).distinct().collect(Collectors.toList());
EntrustSample sample = entrustSampleService.getById(sampleIds.get(0));
logger.error("print sample name:{} ", sample.getName());
if (!(Objects.equals(sample.getName(), "原铝") || Objects.equals(sample.getName(), "铝成品"))) { if (!(Objects.equals(sample.getName(), "原铝") || Objects.equals(sample.getName(), "铝成品"))) {
return; return;
} }
logger.error("开始处理项目比较..."); logger.error("begin compare item test value...");
SlotQueryDTO slotQuery = new SlotQueryDTO(); SlotQueryDTO slotQuery = new SlotQueryDTO();
slotQuery.setIds(ids); slotQuery.setSampleIds(sampleIds);
// 每次提交编制报告时,添加对比记录 // 每次提交编制报告时,添加对比记录
itemComparisonService.saveCompareDataBatch(slotQuery); itemComparisonService.saveCompareDataBatch(slotQuery,account);
} }
@Override @Override
......
...@@ -47,11 +47,11 @@ public class EntrustSampleItemIndexServiceImpl extends BaseServiceImpl<EntrustSa ...@@ -47,11 +47,11 @@ public class EntrustSampleItemIndexServiceImpl extends BaseServiceImpl<EntrustSa
} }
@Override @Override
public List<Map<String, Object>> listSampleItemIndex(List<Long> sampleIds) { public List<Map<String, Object>> listSampleItemIndex(List<Long> entrustIds, List<Long> sampleIds) {
if (CollectionUtils.isEmpty(sampleIds)) { if (CollectionUtils.isEmpty(entrustIds) && CollectionUtils.isEmpty(sampleIds)) {
return new ArrayList<>(); return new ArrayList<>();
} }
return baseMapper.selectSampleItemIndex(sampleIds); return baseMapper.selectSampleItemIndex(entrustIds, sampleIds);
} }
@Override @Override
......
...@@ -1482,7 +1482,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -1482,7 +1482,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
return; return;
} }
// 获取检测项目指标数据 // 获取检测项目指标数据
List<Map<String, Object>> dataList = entrustSampleItemIndexService.listSampleItemIndex(ids); List<Map<String, Object>> dataList = entrustSampleItemIndexService.listSampleItemIndex(null, ids);
dataList.forEach(t -> { dataList.forEach(t -> {
Long sampleId = Long.valueOf(t.get("id").toString()); Long sampleId = Long.valueOf(t.get("id").toString());
t.put("brand", sampleBrandMap.get(sampleId)); t.put("brand", sampleBrandMap.get(sampleId));
...@@ -1655,6 +1655,25 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -1655,6 +1655,25 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
return baseMapper.deletePhysicalByEntrustIds(ids) > 0; return baseMapper.deletePhysicalByEntrustIds(ids) > 0;
} }
@Override
public Boolean sendErpData(List<Long> entrustIds) {
RestAssert.fail(CollectionUtils.isEmpty(entrustIds), "请选择要发送数据的委托!");
Entrust entrust = entrustService.getById(entrustIds.get(0));
RestAssert.fail(!Arrays.asList("原铝", "铝成品").contains(entrust.getSampleName()), "非原铝或铝成品不予发送!");
List<Map<String, Object>> mapList = entrustSampleItemIndexService.listSampleItemIndex(entrustIds, null);
RestAssert.fail(CollectionUtils.isEmpty(mapList), "数据为空,取消发送!");
try {
log("准备发送数据");
doSendErpData(mapList);
return true;
} catch (Exception e) {
log("请求失败,请稍后重试!");
logger.error("exception while sending data to server: {}", e.getMessage());
RestAssert.fail("请求失败,请稍后重试!");
}
return false;
}
private String getCellValue(XSSFRow xssfRow, int cellIndex) { private String getCellValue(XSSFRow xssfRow, int cellIndex) {
XSSFCell cell = xssfRow.getCell(cellIndex); XSSFCell cell = xssfRow.getCell(cellIndex);
String value = HSSFWorkbookUtil.getJavaValue(cell).toString(); String value = HSSFWorkbookUtil.getJavaValue(cell).toString();
......
...@@ -1596,6 +1596,9 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust> ...@@ -1596,6 +1596,9 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
if (isCanIntoPrevNode(entrust)) { if (isCanIntoPrevNode(entrust)) {
prevFlow = EntrustFlowUtils.getPrevFlowStatus(entrust.getFlowStatus(), entrust.getStatusPath()); prevFlow = EntrustFlowUtils.getPrevFlowStatus(entrust.getFlowStatus(), entrust.getStatusPath());
} }
// 添加退回限制,若不为 TEST 则无法退回;
RestAssert.fail(prevFlow == null, "上一状态为空委托无法退回!");
RestAssert.fail(prevFlow != EntrustFlowEnum.TEST, String.format("上一状态为【%s】委托无法退回!", prevFlow.getDisplay()));
// 1.获取委托,样品,检测项目状态 // 1.获取委托,样品,检测项目状态
EntrustStatusEnum prevStatus = EntrustFlowUtils.getStatus(prevFlow); EntrustStatusEnum prevStatus = EntrustFlowUtils.getStatus(prevFlow);
EntrustSampleStatusEnum prevSampleStatus = EntrustFlowUtils.getSampleStatus(prevFlow); EntrustSampleStatusEnum prevSampleStatus = EntrustFlowUtils.getSampleStatus(prevFlow);
......
...@@ -2,6 +2,8 @@ package com.patzn.cloud.service.lims.hmhj.service.impl; ...@@ -2,6 +2,8 @@ package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.toolkit.CollectionUtils; import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.controller.LoginHelper;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl; import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.commons.toolkit.DateUtils; import com.patzn.cloud.commons.toolkit.DateUtils;
import com.patzn.cloud.commons.toolkit.JacksonUtils; import com.patzn.cloud.commons.toolkit.JacksonUtils;
...@@ -32,8 +34,13 @@ public class ItemComparisonServiceImpl extends BaseServiceImpl<ItemComparisonMap ...@@ -32,8 +34,13 @@ public class ItemComparisonServiceImpl extends BaseServiceImpl<ItemComparisonMap
@Resource @Resource
private IMaterialItemService materialItemService; private IMaterialItemService materialItemService;
@Resource
private UserInfoServiceImpl userInfoService;
@Override @Override
public Page<ItemComparison> page(Page<ItemComparison> page, SlotQueryDTO slotQueryDTO) { public Page<ItemComparison> page(Page<ItemComparison> page, SlotQueryDTO slotQueryDTO) {
Account account = LoginHelper.getAccount();
slotQueryDTO.setPeriod(userInfoService.getUserPeriod(account));
return page.setRecords(baseMapper.selectDataPage(page, slotQueryDTO)); return page.setRecords(baseMapper.selectDataPage(page, slotQueryDTO));
} }
...@@ -57,6 +64,7 @@ public class ItemComparisonServiceImpl extends BaseServiceImpl<ItemComparisonMap ...@@ -57,6 +64,7 @@ public class ItemComparisonServiceImpl extends BaseServiceImpl<ItemComparisonMap
Map<String, List<ItemComparison>> slotItemMap = new HashMap<>(16); Map<String, List<ItemComparison>> slotItemMap = new HashMap<>(16);
itemCompareVOList.forEach(item -> { itemCompareVOList.forEach(item -> {
String limitValueStr = limitValueMap.get(item.getSampleName() + item.getName()); String limitValueStr = limitValueMap.get(item.getSampleName() + item.getName());
// 对于限值为空的原铝Fe和原铝Si,默认设为0.04和0.02
if (StringUtils.isBlank(limitValueStr)) { if (StringUtils.isBlank(limitValueStr)) {
limitValueStr = Objects.equals(item.getName(), "原铝Fe") ? "0.04" : "0.02"; limitValueStr = Objects.equals(item.getName(), "原铝Fe") ? "0.04" : "0.02";
} }
...@@ -66,7 +74,7 @@ public class ItemComparisonServiceImpl extends BaseServiceImpl<ItemComparisonMap ...@@ -66,7 +74,7 @@ public class ItemComparisonServiceImpl extends BaseServiceImpl<ItemComparisonMap
BigDecimal newVal = new BigDecimal(item.getTestValue()); BigDecimal newVal = new BigDecimal(item.getTestValue());
BigDecimal oldVal = new BigDecimal(item.getPrevTestValue()); BigDecimal oldVal = new BigDecimal(item.getPrevTestValue());
BigDecimal difVal = newVal.subtract(oldVal); BigDecimal difVal = newVal.subtract(oldVal);
item.setDiffValue(difVal.doubleValue()); item.setDiffValue(difVal.abs().toPlainString());
BigDecimal limitValue = new BigDecimal(item.getLimitValue()); BigDecimal limitValue = new BigDecimal(item.getLimitValue());
// 差值与限定值相比,大于0需要重取 // 差值与限定值相比,大于0需要重取
if (difVal.abs().compareTo(limitValue) > 0) { if (difVal.abs().compareTo(limitValue) > 0) {
...@@ -88,18 +96,24 @@ public class ItemComparisonServiceImpl extends BaseServiceImpl<ItemComparisonMap ...@@ -88,18 +96,24 @@ public class ItemComparisonServiceImpl extends BaseServiceImpl<ItemComparisonMap
} }
@Override @Override
public boolean saveCompareDataBatch(SlotQueryDTO queryDTO) { public boolean saveCompareDataBatch(SlotQueryDTO queryDTO, Account account) {
List<ItemComparison> comparisonList = listCompareItems(queryDTO); List<ItemComparison> comparisonList = listCompareItems(queryDTO);
logger.error("search data : {}", JacksonUtils.toJSONString(comparisonList)); logger.error("search data : {}", JacksonUtils.toJSONString(comparisonList));
if (CollectionUtils.isEmpty(comparisonList)) { if (CollectionUtils.isEmpty(comparisonList)) {
logger.error("search data : empty list");
return false; return false;
} }
// ==
comparisonList.forEach(item -> {
item.setUid(account.getUserId()).setCompanyId(account.getCompanyId());
});
ItemComparison comparison = comparisonList.get(0); ItemComparison comparison = comparisonList.get(0);
queryDTO.setQueryDate(DateUtils.str2Date(comparison.getCompareDate())); queryDTO.setQueryDate(DateUtils.str2Date(comparison.getCompareDate()));
queryDTO.setSampleName(comparison.getSampleName()); queryDTO.setSampleName(comparison.getSampleName());
queryDTO.setIds(null);
// 根据时间查询是否有存在的数据 // 根据时间查询是否有存在的数据
List<ItemComparison> itemComparisonList = baseMapper.selectDataPage(null, queryDTO); List<ItemComparison> itemComparisonList = baseMapper.selectDataPage(new Page(1, Integer.MAX_VALUE), queryDTO);
logger.info("search query item comparison list is : {}", JacksonUtils.toJSONString(itemComparisonList));
// 数据组Map,过滤重复数据 // 数据组Map,过滤重复数据
if (CollectionUtils.isNotEmpty(itemComparisonList)) { if (CollectionUtils.isNotEmpty(itemComparisonList)) {
Map<String, ItemComparison> itemComparisonMap = itemComparisonList.stream().collect(Collectors.toMap(it -> it.getSampleCode(), Function.identity())); Map<String, ItemComparison> itemComparisonMap = itemComparisonList.stream().collect(Collectors.toMap(it -> it.getSampleCode(), Function.identity()));
......
...@@ -100,38 +100,64 @@ ...@@ -100,38 +100,64 @@
</select> </select>
<select id="selectSampleItemIndex" resultType="java.util.Map"> <select id="selectSampleItemIndex" resultType="java.util.Map">
SELECT with sample_item as (
s.id, SELECT DISTINCT ON ( s.slot_no, ii.NAME )
s.NAME "sample_name", (case when REPLACE(s.NAME, '重取', '') = '原铝' then '原铝' else '铝成品' end) "sample_name",
s.code "sample_code", (CASE WHEN strpos(s.code, '-') > 0 THEN s.code ELSE substr(s.code, 0, 8) || '-' || substr(s.code, 8, 4) END) "sample_code",
max(s.sample_from) "sample_from", s.slot_no,
max(s.sample_grading) "brand", s.sample_from,
max(i.tester) "tester", s.sample_grading "brand",
to_char(max(i.test_time),'YYYY-MM-DD HH24:MI:SS') "test_time", s.entrust_id,
max(r.report_checker) "report_checker", s.company_id,
max(CASE WHEN S.NAME = '原铝' then e.assignor else r.report_issuer end) "report_issuer", i.tester,
max(r.quality_inspector) "quality_inspector", i.test_time,
max(case when ii.name = '原铝Fe' then trim(ii.test_value) else null end) "fe", ii.NAME,
max(case when ii.name = '原铝Si' then trim(ii.test_value) else null end) "si", ii.test_value
max(case when ii.name = '原铝Cu' then trim(ii.test_value) else null end) "cu", FROM entrust_sample_item_index ii
max(case when ii.name = '原铝Ga' then trim(ii.test_value) else null end) "ga",
max(case when ii.name = '原铝Mg' then trim(ii.test_value) else null end) "mg",
max(case when ii.name = '原铝Zn' then trim(ii.test_value) else null end) "zn",
max(case when ii.name = '原铝Mn' then trim(ii.test_value) else null end) "mn",
max(case when ii.name = '原铝Ni' then trim(ii.test_value) else null end) "ni",
max(case when ii.name = '原铝V' then trim(ii.test_value) else null end) "v"
FROM
entrust_sample_item_index ii
JOIN entrust_sample_item i ON i.ID = ii.entrust_sample_item_id AND i.deleted = 0 JOIN entrust_sample_item i ON i.ID = ii.entrust_sample_item_id AND i.deleted = 0
JOIN entrust_sample s ON s.ID = i.entrust_sample_id AND s.deleted = 0 JOIN entrust_sample s ON s.ID = i.entrust_sample_id AND s.deleted = 0
JOIN entrust e on e.ID = s.entrust_id AND e.deleted = 0
LEFT JOIN entrust_report r ON r.entrust_id = s.entrust_id AND r.deleted = 0
WHERE ii.deleted = 0 WHERE ii.deleted = 0
-- AND s.NAME IN ('原铝', '铝成品') <if test="null != entrustIds">
<foreach collection="entrustIds" index="index" item="entrustId" open=" and s.entrust_id in (" separator="," close=")">
#{entrustId}
</foreach>
</if>
<if test="null != sampleIds">
<foreach collection="sampleIds" index="index" item="sampleId" open=" and s.id in (" separator="," close=")"> <foreach collection="sampleIds" index="index" item="sampleId" open=" and s.id in (" separator="," close=")">
#{sampleId} #{sampleId}
</foreach> </foreach>
GROUP BY s.id,s.name,s.code </if>
ORDER BY s.slot_no,
ii.NAME,
i.ctime DESC
)
SELECT si.sample_code,
si.sample_name,
si.sample_from,
si.brand,
max(s.id) "id",
max(si.tester) "tester",
to_char(max(si.test_time), 'YYYY-MM-DD HH24:MI:SS') "test_time",
max(r.report_checker) "report_checker",
max(CASE WHEN si.NAME = '原铝' then e.assignor else r.report_issuer end) "report_issuer",
max(r.quality_inspector) "quality_inspector",
max(case when si.name = '原铝Fe' then trim(si.test_value) end) "fe",
max(case when si.name = '原铝Si' then trim(si.test_value) end) "si",
max(case when si.name = '原铝Cu' then trim(si.test_value) end) "cu",
max(case when si.name = '原铝Ga' then trim(si.test_value) end) "ga",
max(case when si.name = '原铝Mg' then trim(si.test_value) end) "mg",
max(case when si.name = '原铝Zn' then trim(si.test_value) end) "zn",
max(case when si.name = '原铝Mn' then trim(si.test_value) end) "mn",
max(case when si.name = '原铝Ni' then trim(si.test_value) end) "ni",
max(case when si.name = '原铝V' then trim(si.test_value) end) "v"
FROM sample_item si
JOIN entrust_sample s on s.code = si.sample_code and s.deleted = 0
JOIN entrust e on e.ID = si.entrust_id AND e.deleted = 0
LEFT JOIN entrust_report r ON r.entrust_id = si.entrust_id AND r.deleted = 0
group by si.sample_code,
si.sample_name,
si.sample_from,
si.brand
</select> </select>
<delete id="physicalDeleteByItemIds"> <delete id="physicalDeleteByItemIds">
......
...@@ -11,6 +11,9 @@ ...@@ -11,6 +11,9 @@
<if test="null != vo.sampleName"> <if test="null != vo.sampleName">
and ic.sample_name = #{vo.sampleName} and ic.sample_name = #{vo.sampleName}
</if> </if>
<if test="null != vo.period">
and ic.period = #{vo.period}
</if>
<if test="null != vo.slotNo"> <if test="null != vo.slotNo">
and ic.slot_no = #{vo.slotNo} and ic.slot_no = #{vo.slotNo}
</if> </if>
...@@ -34,13 +37,14 @@ ...@@ -34,13 +37,14 @@
<select id="selectCompareItems" resultType="com.patzn.cloud.service.hmhj.entity.ItemComparison"> <select id="selectCompareItems" resultType="com.patzn.cloud.service.hmhj.entity.ItemComparison">
SELECT SELECT
n.*, n.*,
o.sample_name "prev_sample_name", o.sample_code "prev_sample_code",
o.test_value "prev_test_value" o.test_value "prev_test_value"
FROM FROM
( SELECT ( SELECT
s.NAME "sample_name", s.NAME "sample_name",
s.code "sample_code", s.code "sample_code",
s.slot_no, s.slot_no,
i.period,
ii.NAME, ii.NAME,
ii.test_value, ii.test_value,
ii.ctime, ii.ctime,
...@@ -54,13 +58,13 @@ ...@@ -54,13 +58,13 @@
WHERE WHERE
ii.deleted = 0 ii.deleted = 0
AND ii.NAME IN ( '原铝Fe', '原铝Si' ) AND ii.NAME IN ( '原铝Fe', '原铝Si' )
AND s.NAME = '原铝' AND s.NAME IN ('原铝', '铝成品')
<if test="null == vo.ids"> <if test="null == vo.sampleIds">
AND to_char( ii.ctime, 'yyyy-MM-dd' ) = to_char(#{vo.queryDate}::timestamp,'yyyy-MM-dd') AND to_char( ii.ctime, 'yyyy-MM-dd' ) = to_char(#{vo.queryDate}::timestamp,'yyyy-MM-dd')
</if> </if>
<if test="null != vo.ids"> <if test="null != vo.sampleIds">
and s.id in and s.id in
<foreach collection="vo.ids" item="sampleId" open="(" separator="," close=")"> <foreach collection="vo.sampleIds" item="sampleId" open="(" separator="," close=")">
#{sampleId} #{sampleId}
</foreach> </foreach>
</if> </if>
...@@ -71,9 +75,9 @@ ...@@ -71,9 +75,9 @@
) n ) n
JOIN ( JOIN (
SELECT DISTINCT ON ( s.slot_no, ii.NAME ) SELECT DISTINCT ON ( s.slot_no, ii.NAME )
replace(s.NAME,'重取','') "sample_name",
(case when strpos(s.code,'-') > 0 then s.code else substr(s.code,0,8) || '-' || substr(s.code,8,4) end) "sample_code", (case when strpos(s.code,'-') > 0 then s.code else substr(s.code,0,8) || '-' || substr(s.code,8,4) end) "sample_code",
s.slot_no, s.slot_no,
i.period,
ii.NAME, ii.NAME,
ii.test_value, ii.test_value,
ii.ctime ii.ctime
...@@ -85,13 +89,21 @@ ...@@ -85,13 +89,21 @@
AND s.deleted = 0 AND s.deleted = 0
WHERE ii.deleted = 0 WHERE ii.deleted = 0
AND ii.NAME IN ('原铝Fe', '原铝Si') AND ii.NAME IN ('原铝Fe', '原铝Si')
AND s.NAME IN ('原铝', '原铝重取') AND s.NAME IN ('原铝', '铝成品', '原铝重取')
<if test="null != vo.sampleIds">
and s.id not in
<foreach collection="vo.sampleIds" item="sampleId" open="(" separator="," close=")">
#{sampleId}
</foreach>
</if>
ORDER BY ORDER BY
s.slot_no, s.slot_no,
ii.NAME, ii.NAME,
i.ctime DESC i.ctime DESC
) o ON n.slot_no = o.slot_no AND n.NAME = o.NAME AND TO_CHAR(n.ctime, 'yyyy-MM-dd' ) = to_char(o.ctime + '2 day','yyyy-MM-dd') ) o ON n.slot_no = o.slot_no
WHERE 1=1 AND n.NAME = o.NAME
AND n.period = o.period
AND TO_CHAR(n.ctime, 'yyyy-MM-dd' ) = to_char(o.ctime + '2 day','yyyy-MM-dd')
</select> </select>
</mapper> </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