Commit 2a14ace5 by lijingjing

原始记录多次检测问题修改;

ERP数据对接;
parent 36663cdd
This source diff could not be displayed because it is too large. You can view the blob instead.
package com.patzn.cloud.service.lims.hmhj.common;
import com.patzn.cloud.commons.constant.CommonConstants;
import com.patzn.cloud.commons.toolkit.DateUtils;
import com.patzn.cloud.service.lims.hmhj.common.consts.HttpConst;
import com.patzn.cloud.service.lims.hmhj.interceptor.NetworkInterceptor;
import okhttp3.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.util.Date;
import java.util.concurrent.TimeUnit;
/**
* okHttpUtils
*
* @author: meazty
* @since: 2022/2/14 12:58
**/
public class OkHttpUtils {
private static final Logger logger = LoggerFactory.getLogger(OkHttpUtils.class);
private static final MediaType MEDIA_TYPE_JSON = MediaType.parse(CommonConstants.CONTENT_TYPE_JSON);
public static String sendByPostJson(String url, String token, String json) {
logger.error("prepare assemble data : {}", DateUtils.toYearMonthDayTime(new Date()));
RequestBody body = RequestBody.create(MEDIA_TYPE_JSON, json);
Request request = new Request.Builder()
.url(url)
.post(body)
.addHeader("Content-Type", HttpConst.CONTENT_TYPE)
.addHeader("Accept-Encoding", HttpConst.ACCEPT_ENCODING)
.addHeader("token", token)
.build();
OkHttpClient client = new OkHttpClient()
.newBuilder()
.connectTimeout(10, TimeUnit.SECONDS)
.readTimeout(120, TimeUnit.SECONDS)
.addNetworkInterceptor(new NetworkInterceptor())
.build();
Response response = null;
try {
logger.error("start execute send data : {}", DateUtils.toYearMonthDayTime(new Date()));
response = client.newCall(request).execute();
assert response.body() != null;
String result = response.body().string();
logger.error("finish response data : {}", DateUtils.toYearMonthDayTime(new Date()));
logger.error("response data :{}", result);
return result;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
package com.patzn.cloud.service.lims.hmhj.common.consts;
/**
* http请求相关常量
*
* @author: meazty
* @since: 2022/2/14 12:42
**/
public class HttpConst {
public static final String ACCEPT_ENCODING = "identity";
public static final String CONTENT_TYPE = "application/json";
public static final String ERP_URL = "http://192.168.0.22/api/LimsData/SaveData";
public static final String ERP_TOKEN = "GmHu6SqGdmmtY6Aup5kp1jlWenQz+vzQ6TBN6x/3dOwfNULkTNLx2/QA9Vhq1F7LEEXP6UKzFCxt99srTFd59DjGOgmrDnvVOYBgtSYbSTD2JNeRRD8AKe/v3TW9rWFtOMfGHtTkh6AxbovaSXa99tI5HUInT2wi2xwkdo9DKOQ=";
}
package com.patzn.cloud.service.lims.hmhj.controller;
import com.baomidou.kisso.annotation.Action;
import com.baomidou.kisso.annotation.Login;
import com.baomidou.mybatisplus.plugins.Page;
import com.google.common.collect.Lists;
import com.patzn.cloud.commons.api.RestAssert;
......@@ -14,6 +16,7 @@ import com.patzn.cloud.service.hmhj.entity.OriginalRecord;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleItemStatusEnum;
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.vo.LmsUserRelGroupVO;
......@@ -727,4 +730,17 @@ public class EntrustSampleItemController extends ServiceController {
public RestResult<Boolean> checkCanWriteOriginal(@RequestParam("ids") Long[] ids) {
return success(entrustSampleItemService.checkCanWriteOriginal(ids));
}
@ApiOperation(value = "模拟测试发送数据到ERP", notes = "模拟测试发送数据到ERP")
@PostMapping("/send_data")
@Login(action = Action.Skip)
public RestResult<Boolean> sendData(@RequestBody List<SampleItemVO> sampleItemVOList) {
return RestResult.failed("测试凯龙");
}
@ApiOperation(value = "根据检测项目ID退回原始记录", notes = "根据检测项目ID退回原始记录")
@PostMapping("/back_user_item")
public RestResult<Boolean> backUserItem(@RequestParam("ids") Long[] ids) {
return success(entrustSampleItemService.backUserItem(ids));
}
}
package com.patzn.cloud.service.lims.hmhj.interceptor;
import okhttp3.*;
import okio.Buffer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.nio.charset.Charset;
/**
* 网络拦截器
*
* @author: meazty
* @since: 2022/2/12 17:23
**/
public class NetworkInterceptor implements Interceptor {
private static final Logger LOGGER = LoggerFactory.getLogger(NetworkInterceptor.class);
@Override
public Response intercept(Interceptor.Chain chain) {
long start = System.currentTimeMillis();
Response response = null;
String responseBody = null;
String responseCode = null;
String url = null;
String requestBody = null;
try {
Request request = chain.request();
url = request.url().toString();
requestBody = getRequestBody(request);
response = chain.proceed(request);
assert response.body() != null;
responseBody = response.body().string();
responseCode = String.valueOf(response.code());
MediaType mediaType = response.body().contentType();
response = response.newBuilder().body(ResponseBody.create(mediaType, responseBody)).build();
} catch (Exception e) {
LOGGER.error(e.getMessage());
} finally {
long end = System.currentTimeMillis();
String duration = String.valueOf(end - start);
LOGGER.info("responseTime= {}, requestUrl= {}, params={}, responseCode= {}, result= {}",
duration, url, requestBody, responseCode, responseBody);
}
return response;
}
private String getRequestBody(Request request) {
String requestContent = "";
if (request == null) {
return requestContent;
}
RequestBody requestBody = request.body();
if (requestBody == null) {
return requestContent;
}
try {
Buffer buffer = new Buffer();
requestBody.writeTo(buffer);
Charset charset = Charset.forName("utf-8");
requestContent = buffer.readString(charset);
} catch (IOException e) {
e.printStackTrace();
}
return requestContent;
}
}
package com.patzn.cloud.service.lims.hmhj.interceptor;
import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;
import java.io.IOException;
/**
* okHttp3请求错误重试机制
*
* @author: meazty
* @since: 2022/2/12 17:13
**/
public class RetryInterceptor implements Interceptor {
public int maxRetryCount;
private int count = 0;
public RetryInterceptor(int maxRetryCount) {
this.maxRetryCount = maxRetryCount;
}
@Override
public Response intercept(Chain chain) throws IOException {
return retry(chain);
}
public Response retry(Chain chain) {
Response response = null;
Request request = chain.request();
try {
response = chain.proceed(request);
while (!response.isSuccessful() && count < maxRetryCount) {
count++;
response = retry(chain);
}
} catch (Exception e) {
while (count < maxRetryCount) {
count++;
response = retry(chain);
}
}
return response;
}
}
......@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotations.SqlParser;
import com.patzn.cloud.commons.mapper.BatchMapper;
import com.patzn.cloud.service.hmhj.entity.EntrustSampleItemIndex;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemIndexVO;
import com.patzn.cloud.service.hmhj.vo.SampleItemVO;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.RowBounds;
......@@ -30,4 +31,5 @@ public interface EntrustSampleItemIndexMapper extends BatchMapper<EntrustSampleI
List<EntrustSampleItemIndexVO> selectIndexWithItem(RowBounds rowBounds, @Param("vo") EntrustSampleItemIndexVO entrustSampleItemIndexVO);
List<SampleItemVO> selectSampleItemIndex(@Param("sampleIds") List<Long> sampleIds);
}
......@@ -8,9 +8,11 @@ import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.util.List;
import java.util.Objects;
/**
* @author Meazty
* @author wangweidong
* @since 2021/05/06
*/
public class OriginalFactory {
private OriginalTemplate template;
......@@ -28,7 +30,7 @@ public class OriginalFactory {
this.xssfWorkbook = xssfWorkbook;
}
public OriginalFactory(OriginalTemplate template, List<EntrustSampleItemVO> voList, Entrust entrust,List<Entrust> entrustList, List<OriginalTemplateConfig> configList, XSSFWorkbook xssfWorkbook) {
public OriginalFactory(OriginalTemplate template, List<EntrustSampleItemVO> voList, Entrust entrust, List<Entrust> entrustList, List<OriginalTemplateConfig> configList, XSSFWorkbook xssfWorkbook) {
this.entrustList = entrustList;
this.template = template;
this.entrust = entrust;
......@@ -47,6 +49,11 @@ public class OriginalFactory {
return new SingleSheetMoreOperation(template, entrustList, voList, configList, xssfWorkbook);
}
// 针对压片分析
if (Objects.equals(template.getTabletAnalysis(), 1)) {
return new SingleSheetMoreTabletOperation(template, voList, entrust, configList, xssfWorkbook);
}
return new SingleSheetMoreOperation(template, voList, entrust, configList, xssfWorkbook);
} else {
Integer templateSampleNum = template.getTemplateSampleNum();
......
......@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.service.IBaseService;
import com.patzn.cloud.service.hmhj.entity.EntrustSampleItemIndex;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemIndexVO;
import com.patzn.cloud.service.hmhj.vo.SampleItemVO;
import java.util.List;
......@@ -37,4 +38,6 @@ public interface IEntrustSampleItemIndexService extends IBaseService<EntrustSamp
List<EntrustSampleItemIndex> getInReportItemIndex(Long sampleId);
Page<EntrustSampleItemIndexVO> pageIndexWithItem(Page<EntrustSampleItemIndexVO> page, EntrustSampleItemIndexVO entrustSampleItemIndexVO);
List<SampleItemVO> listSampleItemIndex(List<Long> sampleIds);
}
......@@ -134,4 +134,5 @@ public interface IEntrustSampleItemService extends IBaseService<EntrustSampleIte
Boolean checkCanWriteOriginal(Long[] ids);
Boolean backUserItem(Long[] ids);
}
......@@ -10,6 +10,7 @@ import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.hmhj.entity.EntrustSampleItem;
import com.patzn.cloud.service.hmhj.entity.EntrustSampleItemIndex;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemIndexVO;
import com.patzn.cloud.service.hmhj.vo.SampleItemVO;
import com.patzn.cloud.service.lims.common.BeanUtils;
import com.patzn.cloud.service.lims.hmhj.mapper.EntrustSampleItemIndexMapper;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustSampleItemIndexService;
......@@ -17,6 +18,7 @@ import com.patzn.cloud.service.lims.hmhj.service.IEntrustSampleItemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
......@@ -45,6 +47,14 @@ public class EntrustSampleItemIndexServiceImpl extends BaseServiceImpl<EntrustSa
}
@Override
public List<SampleItemVO> listSampleItemIndex(List<Long> sampleIds) {
if (CollectionUtils.isEmpty(sampleIds)) {
return new ArrayList<>();
}
return baseMapper.selectSampleItemIndex(sampleIds);
}
@Override
public boolean removeByIds(List<Long> ids) {
return baseMapper.deleteBatchIds(ids) > 0;
}
......
......@@ -58,7 +58,7 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp
public Page<EntrustSamplePrepare> page(Page<EntrustSamplePrepare> page, EntrustSamplePrepare entrustSamplePrepare) {
Wrapper wrapper = new EntityWrapper<>(entrustSamplePrepare);
return this.page(page, wrapper);
return super.page(page, wrapper);
}
@Override
......
......@@ -21,6 +21,11 @@ spring:
cloud:
consul:
host: localhost
redis:
database: 0
host: meazty.fun
port: 6379
password: rest123
mail:
host: smtp.163.com
username: ptlims_test@163.com
......
......@@ -128,7 +128,8 @@
<select id="selectVOList" resultType="com.patzn.cloud.service.hmhj.vo.EntrustVO">
with sample as (
SELECT
s.company_id,s.entrust_id,max(s.sample_from) "sample_from"
s.company_id,s.entrust_id,max(s.sample_from) "sample_from",
(case when count(1) = sum(s.send_erp) then 1 else 0 end ) "send_erp"
from entrust_sample s where s.deleted = 0
<if test="null != vo.sampleCode">
and s.code like concat('%',#{vo.sampleCode},'%')
......
......@@ -88,4 +88,35 @@
and i.id = #{vo.itemId}
</if>
</select>
<select id="selectSampleItemIndex" resultType="com.patzn.cloud.service.hmhj.vo.SampleItemVO">
SELECT
s.NAME "sample_name",
s.code "sample_code",
max(s.sample_grading) "brand",
max(i.test_time) "test_time",
max(r.report_checker) "report_checker",
max(r.report_issuer) "report_issuer",
max(r.quality_inspector) "quality_inspector",
max(case when ii.name = '原铝Fe' then ii.test_value else null end) "fe",
max(case when ii.name = '原铝Si' then ii.test_value else null end) "si",
max(case when ii.name = '原铝Cu' then ii.test_value else null end) "cu",
max(case when ii.name = '原铝Ga' then ii.test_value else null end) "ga",
max(case when ii.name = '原铝Mg' then ii.test_value else null end) "mg",
max(case when ii.name = '原铝Zn' then ii.test_value else null end) "zn",
max(case when ii.name = '原铝Mn' then ii.test_value else null end) "mn",
max(case when ii.name = '原铝Ni' then ii.test_value else null end) "ni",
max(case when ii.name = '原铝V' then 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 s ON s.ID = i.entrust_sample_id AND s.deleted = 0
LEFT JOIN entrust_report r ON r.entrust_id = s.entrust_id AND r.deleted = 0
WHERE ii.deleted = 0
-- AND s.NAME IN ('原铝', '铝成品')
<foreach collection="sampleIds" index="index" item="sampleId" open=" and s.id in (" separator="," close=")">
#{sampleId}
</foreach>
GROUP BY s.name,s.code
</select>
</mapper>
......@@ -767,8 +767,8 @@
LEFT JOIN original_record r on r.id = l.record_id and r.deleted = 0
WHERE i.deleted = 0 and i.company_id = #{vo.companyId}
<if test="null != vo.nameList">
<foreach collection="vo.nameList" item="name" open="AND ( i.name " close=")" separator=" OR i.name ">
LIKE CONCAT ('%',#{name},'%')
<foreach collection="vo.nameList" item="name" open="AND i.name in (" close=")" separator=",">
#{name}
</foreach>
</if>
<if test="null != vo.standard">
......
/** created by meazty on 2022/2/17 23:13 **/
/** created by meazty on 2022/2/17 23:13 **/
-- 委托样品 --
ALTER TABLE "public"."entrust_sample"
ADD COLUMN "send_erp" int2 default 0;
COMMENT ON COLUMN "public"."entrust_sample"."send_erp" IS '是否发生ERP数据【0:否,1:是】';
-- 原始记录模板 --
ALTER TABLE "public"."original_template"
ADD COLUMN "tablet_analysis" int2 default 0;
COMMENT ON COLUMN "public"."original_template"."tablet_analysis" IS '压片原始记录【0:否,1:是】';
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