Commit d26d8ca8 by lijingjing

WMS推送数据接口修改;

parent b3eed0e1
......@@ -19,6 +19,8 @@ public class ServiceProperties {
*/
private String soffice;
private String libOfficeUrl;
private String url;
private String apiUrl;
......@@ -107,7 +109,19 @@ public class ServiceProperties {
this.provinceItemUrl = provinceItemUrl;
}
public String getLibOfficeUrl() {
return libOfficeUrl;
}
public void setLibOfficeUrl(String libOfficeUrl) {
this.libOfficeUrl = libOfficeUrl;
}
public String buildWmsUrl(String method) {
return this.wmsUrl + method;
}
public String buildErpUrl(String method) {
return this.erpUrl + method;
}
}
package com.patzn.cloud.service.lims.hmhj.common;
import com.fasterxml.jackson.core.type.TypeReference;
import com.patzn.cloud.commons.toolkit.JacksonUtils;
import com.patzn.cloud.service.hmhj.model.ErpRespResult;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpHeaders;
import java.util.Map;
import java.util.Objects;
/**
* @author Meazty
*/
public class ErpRequest {
private static final Logger logger = LoggerFactory.getLogger(ErpRequest.class);
public static ErpRespResult sendPost(String url, Map<String, ?> params, HttpHeaders headers) {
try {
String resultStr = RestTemplateUtils.sendPost(url, params, headers);
if (StringUtils.isBlank(resultStr)) {
logger.error("✦✦✦✦ ErpRequest ✦✦✦✦ sendPost ✦✦✦✈ DPS响应结果为空!");
return ErpRespResult.failure("DPS响应结果为空!");
}
ErpRespResult result = JacksonUtils.readValue(resultStr, new TypeReference<ErpRespResult>() {
});
if (Objects.isNull(result)) {
logger.error("✦✦✦✦ ErpRequest ✦✦✦✦ sendPost ✦✦✦✈ 请求DPS接口失败:{}", JacksonUtils.toJSONString(result));
return ErpRespResult.failure("请求DPS接口失败!");
}
return result;
} catch (Exception e) {
logger.error("✦✦✦✦ ErpRequest ✦✦✦✦ sendPost ✦✦✦✈ 请求DPS接口异常:", e);
return ErpRespResult.failure("请求DPS接口异常!");
}
}
public static <T> ErpRespResult<T> sendGet(String url, Map<String, ?> params, TypeReference<ErpRespResult<T>> typeReference) {
try {
String resultStr = RestTemplateUtils.sendGet(url, params);
if (StringUtils.isBlank(resultStr)) {
logger.error("✦✦✦✦ ErpRequest ✦✦✦✦ sendGet ✦✦✦✈ DPS响应结果为空!");
return ErpRespResult.failure("DPS响应结果为空!");
}
ErpRespResult<T> result = JacksonUtils.readValue(resultStr, typeReference);
if (Objects.isNull(result)) {
logger.error("✦✦✦✦ ErpRequest ✦✦✦✦ sendGet ✦✦✦✈ 请求DPS接口失败:{}", JacksonUtils.toJSONString(result));
return ErpRespResult.failure("请求DPS接口失败!");
}
return result;
} catch (Exception e) {
logger.error("✦✦✦✦ ErpRequest ✦✦✦✦ sendGet ✦✦✦✈ 请求DPS接口异常:", e);
return ErpRespResult.failure("请求DPS接口异常!");
}
}
}
......@@ -81,8 +81,16 @@ public class RestTemplateUtils {
return send(url, urlParam, body, method, headers);
}
public static String sendJson(String url, Map<String, ?> body) {
return sendJson(url, null, body, HttpMethod.POST, new HttpHeaders());
public static String sendPost(String url, Map<String, ?> body) {
return sendPost(url, body, new HttpHeaders());
}
public static String sendPost(String url, Map<String, ?> body, HttpHeaders headers) {
return sendJson(url, null, body, HttpMethod.POST, headers);
}
public static String sendGet(String url, Map<String, ?> params) {
return sendSimple(url, params);
}
public static String sendJson(String url, Map<String, ?> urlParam, Map<String, ?> body) {
......
......@@ -16,44 +16,44 @@ public class WmsRequest {
private static final Logger logger = LoggerFactory.getLogger(WmsRequest.class);
public static <T> T sendJson(String url, Map<String, ?> params, TypeReference<WmsRespResult<T>> typeReference) {
public static <T> T sendPost(String url, Map<String, ?> params, TypeReference<WmsRespResult<T>> typeReference) {
try {
String resultStr = RestTemplateUtils.sendJson(url, params);
String resultStr = RestTemplateUtils.sendPost(url, params);
if (StringUtils.isBlank(resultStr)) {
logger.error("✦✦✦✦ WmsRequest ✦✦✦✦ sendJson ✦✦✦✈ WMS响应结果为空!");
logger.error("✦✦✦✦ WmsRequest ✦✦✦✦ sendPost ✦✦✦✈ WMS响应结果为空!");
return null;
}
WmsRespResult<T> result = JacksonUtils.readValue(resultStr, typeReference);
if (!WmsRespResult.isSuccess(result)) {
logger.error("✦✦✦✦ WmsRequest ✦✦✦✦ sendJson ✦✦✦✈ 请求WMS接口失败:{}", JacksonUtils.toJSONString(result));
if (!result.success()) {
logger.error("✦✦✦✦ WmsRequest ✦✦✦✦ sendPost ✦✦✦✈ 请求WMS接口失败:{}", JacksonUtils.toJSONString(result));
return null;
}
T data = result.getData();
logger.info("✦✦✦✦ WmsRequest ✦✦✦✦ sendJson ✦✦✦✈ [url, params]: {}", JacksonUtils.toJSONString(data.toString()));
logger.info("✦✦✦✦ WmsRequest ✦✦✦✦ sendPost ✦✦✦✈ [url, params]: {}", JacksonUtils.toJSONString(data.toString()));
return data;
} catch (Exception e) {
logger.error("✦✦✦✦ WmsRequest ✦✦✦✦ sendJson ✦✦✦✈ 请求WMS接口异常:", e);
logger.error("✦✦✦✦ WmsRequest ✦✦✦✦ sendPost ✦✦✦✈ 请求WMS接口异常:", e);
}
return null;
}
public static WmsRespResult sendJson(String url, Map<String, ?> params) {
public static WmsRespResult sendPost(String url, Map<String, ?> params) {
try {
String resultStr = RestTemplateUtils.sendJson(url, params);
String resultStr = RestTemplateUtils.sendPost(url, params);
if (StringUtils.isBlank(resultStr)) {
logger.error("✦✦✦✦ WmsRequest ✦✦✦✦ sendJson ✦✦✦✈ WMS响应结果为空!");
return null;
logger.error("✦✦✦✦ WmsRequest ✦✦✦✦ sendPost ✦✦✦✈ WMS响应结果为空!");
return WmsRespResult.failure("WMS响应结果为空!");
}
WmsRespResult result = JacksonUtils.readValue(resultStr, new TypeReference<WmsRespResult>() {
});
if (!WmsRespResult.isSuccess(result)) {
logger.error("✦✦✦✦ WmsRequest ✦✦✦✦ sendJson ✦✦✦✈ 请求WMS接口失败:{}", JacksonUtils.toJSONString(result));
return null;
if (!result.success()) {
logger.error("✦✦✦✦ WmsRequest ✦✦✦✦ sendPost ✦✦✦✈ 请求WMS接口失败:{}", JacksonUtils.toJSONString(result));
return WmsRespResult.failure(result.getDescription());
}
return result;
} catch (Exception e) {
logger.error("✦✦✦✦ WmsRequest ✦✦✦✦ sendJson ✦✦✦✈ 请求WMS接口异常:", e);
logger.error("✦✦✦✦ WmsRequest ✦✦✦✦ sendPost ✦✦✦✈ 请求WMS接口异常:", e);
return WmsRespResult.failure("请求WMS接口异常");
}
return null;
}
}
......@@ -14,10 +14,16 @@ public class HttpConst {
/**
* 委托编码同步接口
*/
public static final String WMS_SYNC_WTBH = "/SyncWTbh";
public static final String WMS_SYNC_WTBH = "SyncWTbh";
public static final String WMS_SYNC_STOCK = "/SyncStock";
/**
* 库存信息查询
*/
public static final String WMS_SYNC_GET_UNIT_LOADS = "GetUnitLoads";
public static final String WMS_SYNC_STOCK_SITUATION = "/SyncStockSituation";
/**
* 大屏信息
*/
public static final String WMS_SYNC_GET_SCREEN = "GetDataShow";
}
......@@ -83,4 +83,5 @@ public class WmsStockDeliveryController extends ServiceController {
public RestResult<Boolean> syncStockDelivery(@RequestBody WmsStockDeliveryData data) {
return success(wmsStockDeliveryService.syncStockDelivery(data));
}
}
......@@ -151,4 +151,6 @@ public interface IEntrustSampleService extends IBaseService<EntrustSample> {
List<Long> getEntrustIdsBySampleCodes(List<String> sampleCodes);
void postWmsEntrustData(List<Entrust> entrustList);
List<EntrustSample> listByEntrustIds(List<Long> entrustIds);
}
......@@ -40,4 +40,5 @@ public interface IWmsStockDeliveryService extends IBaseService<WmsStockDelivery>
* @return the boolean
*/
boolean syncStockDelivery(WmsStockDeliveryData data);
}
......@@ -92,7 +92,7 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe
@Resource
private IItemComparisonService itemComparisonService;
@Value("${libreOffice.url}")
@Value("${service.lib-office-url}")
private String libreOfficeUrl;
@Override
......
package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.toolkit.IOUtils;
import com.fasterxml.jackson.core.type.TypeReference;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.patzn.cloud.commons.api.RestAssert;
......@@ -20,7 +19,6 @@ import com.patzn.cloud.commons.toolkit.*;
import com.patzn.cloud.oss.starter.OssClient;
import com.patzn.cloud.oss.starter.OssFileResult;
import com.patzn.cloud.service.BaseEntity;
import com.patzn.cloud.service.hmhj.model.KV;
import com.patzn.cloud.service.hmhj.dto.QueryDTO;
import com.patzn.cloud.service.hmhj.dto.SampleItemDTO;
import com.patzn.cloud.service.hmhj.entity.*;
......@@ -28,6 +26,8 @@ import com.patzn.cloud.service.hmhj.enums.EntrustFlowEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleItemStatusEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleStatusEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustStatusEnum;
import com.patzn.cloud.service.hmhj.model.ErpRespResult;
import com.patzn.cloud.service.hmhj.model.KV;
import com.patzn.cloud.service.hmhj.vo.*;
import com.patzn.cloud.service.lims.base.entity.LmsUserRelGroup;
import com.patzn.cloud.service.lims.base.enums.FlowTypeEnum;
......@@ -37,9 +37,11 @@ import com.patzn.cloud.service.lims.common.CompareUtils;
import com.patzn.cloud.service.lims.common.DateKit;
import com.patzn.cloud.service.lims.common.StringHandleUtils;
import com.patzn.cloud.service.lims.common.service.IExportService;
import com.patzn.cloud.service.lims.config.ServiceProperties;
import com.patzn.cloud.service.lims.hmhj.common.ErpRequest;
import com.patzn.cloud.service.lims.hmhj.common.HSSFWorkbookUtil;
import com.patzn.cloud.service.lims.hmhj.common.LabreOfficeUtil;
import com.patzn.cloud.service.lims.hmhj.common.OkHttpUtils;
import com.patzn.cloud.service.lims.hmhj.common.consts.HttpConst;
import com.patzn.cloud.service.lims.hmhj.mapper.EntrustSampleItemMapper;
import com.patzn.cloud.service.lims.hmhj.original.Operation;
import com.patzn.cloud.service.lims.hmhj.original.OriginalFactory;
......@@ -52,11 +54,12 @@ import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
......@@ -79,88 +82,82 @@ import static java.util.stream.Collectors.toSet;
@Service
public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleItemMapper, EntrustSampleItem> implements IEntrustSampleItemService {
@Autowired
@Resource
private IEntrustSampleService entrustSampleService;
@Autowired
@Resource
private IEntrustReportService entrustReportService;
@Autowired
@Resource
private IEntrustRecordService entrustRecordService;
@Autowired
@Resource
private IEntrustSampleItemIndexService entrustSampleItemIndexService;
@Autowired
@Resource
private IEntrustSampleItemRecordService entrustSampleItemRecordService;
@Autowired
@Resource
private IOriginalTemplateService originalTemplateService;
@Autowired
@Resource
private IOriginalTemplateConfigService originalTemplateConfigService;
@Autowired
@Resource
private IEntrustReportTemplateService entrustReportTemplateService;
@Autowired
@Resource
private IEntrustReportTemplateConfigService entrustReportTemplateConfigService;
@Autowired
@Resource
private IOriginalRecordService originalRecordService;
@Autowired
@Resource
private IEntrustService entrustService;
@Autowired
@Resource
private IItemDeviateService itemDeviateService;
@Autowired
@Resource
private IContractSampleService contractSampleService;
@Autowired
@Resource
private IItemRelOriginalRecordService itemRelOriginalRecordService;
@Autowired
@Resource
private IGradingStandardService gradingStandardService;
@Autowired
@Resource
private IGradingProductService gradingProductService;
@Autowired
@Resource
private IGradingItemService gradingItemService;
@Autowired
@Resource
private OssClient ossClient;
@Autowired
@Resource
private IExportService exportService;
@Autowired
@Resource
private Executor executor1;
@Autowired
@Resource
private UserInfoServiceImpl userInfoService;
@Value("${libreOffice.url}")
private String libreOfficeUrl;
@Value("${service.erp-url}")
private String erpUrl;
@Value("${service.erp-token}")
private String erpToken;
@Resource
private ServiceProperties serviceProperties;
@Autowired
@Resource
private ILmsOriginalRecordInfoService originalRecordInfoService;
@Autowired
@Resource
private IQualificationService qualificationService;
@Autowired
@Resource
private IContractSampleItemService contractSampleItemService;
@Autowired
@Resource
private IItemComparisonService itemComparisonService;
@Override
......@@ -437,7 +434,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
for (OriginalRecord record : originalRecordList) {
InputStream io = ossClient.download(record.getObjectKey());
File file = LabreOfficeUtil.inputStream2File(io);
File filePdf = LabreOfficeUtil.convertOffice2PDF(libreOfficeUrl, file);
File filePdf = LabreOfficeUtil.convertOffice2PDF(serviceProperties.getLibOfficeUrl(), file);
OssFileResult fileResult = ossClient.upload(filePdf);
......@@ -1473,10 +1470,11 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
* @param sampleBrandMap
*/
private void sendTestDataToErp(List<Long> ids, Map<Long, String> sampleBrandMap) {
log("执行发送的样品IDS:" + StringUtils.join(ids, ","));
logger.info("✦✦✦✦ EntrustSampleItemServiceImpl ✦✦✦✦ sendTestDataToErp ✦✦✦✈ [ids]: {}", StringUtils.join(ids, ","));
logger.info("✦✦✦✦ EntrustSampleItemServiceImpl ✦✦✦✦ sendTestDataToErp ✦✦✦✈ [sampleBrandMap]: {}", JacksonUtils.toJSONString(sampleBrandMap));
List<EntrustSample> sampleList = entrustSampleService.getBatchIds(ids);
if (CollectionUtils.isEmpty(sampleList)) {
log("数据为空,不发送!");
logger.error("✦✦✦✦ EntrustSampleItemServiceImpl ✦✦✦✦ sendTestDataToErp ✦✦✦✈ sampleList为空,不予发送!");
return;
}
// 获取编号集
......@@ -1485,11 +1483,11 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
//
EntrustSample sample = sampleList.get(0);
String sampleName = sample.getName();
log("样品名称:" + sampleName);
logger.info("✦✦✦✦ EntrustSampleItemServiceImpl ✦✦✦✦ sendTestDataToErp ✦✦✦✈ [样品名称]: {}", sampleName);
// 只针对原铝和铝成品,原铝重取只是对原铝的补充
final String ylname = "原铝", cqname = "原铝重取", cpname = "铝成品";
if (!(Objects.equals(ylname, sampleName) || Objects.equals(cqname, sampleName) || Objects.equals(cpname, sampleName))) {
log("非原铝或铝成品,不予发送!");
logger.error("✦✦✦✦ EntrustSampleItemServiceImpl ✦✦✦✦ sendTestDataToErp ✦✦✦✈ 非原铝或铝成品,不予发送!");
return;
}
......@@ -1506,7 +1504,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
// 当为原铝时,判断是否存在重取,如果存在重取,需要在重取时触发,也就是下个条件下触发,如果不存在重取,那么直接发
// == 若存在,那么需要在重取阶段处理(重取样品,报告发送再处理)
if (itemComparisonService.isExistCompareData(sampleCodeList)) {
log("存在需要重取的样品,需要重取时再发送!");
logger.error("✦✦✦✦ EntrustSampleItemServiceImpl ✦✦✦✦ sendTestDataToErp ✦✦✦✈ 存在需要重取的样品,需要重取时再发送!");
return;
}
dataList = entrustSampleItemIndexService.listSampleItemIndex(null, ids);
......@@ -1530,7 +1528,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
// 基本上不可能为空的
if (CollectionUtils.isEmpty(entrustIds)) {
log("根据样品编号获取委托id失败");
logger.error("✦✦✦✦ EntrustSampleItemServiceImpl ✦✦✦✦ sendTestDataToErp ✦✦✦✈ 根据样品编号获取委托id失败!");
return;
}
// 根据委托去查询,也只能根据委托去查询
......@@ -1571,11 +1569,10 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
logger.error("DATA_ITEM: {}", t);
});
try {
log("准备发送数据");
logger.info("✦✦✦✦ EntrustSampleItemServiceImpl ✦✦✦✦ sendTestDataToErp ✦✦✦✈ 开始准备发送ERP数据!");
doSendErpData(dataList);
} catch (Exception e) {
log("请求失败,请稍后重试!");
logger.error(e.getMessage());
logger.error("✦✦✦✦ EntrustSampleItemServiceImpl ✦✦✦✦ sendTestDataToErp ✦✦✦✈ 发送ERP数据时异常:", e);
}
}
......@@ -1596,16 +1593,20 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
return codeList;
}
private void log(String str) {
logger.error("HMHJ====>ERP===={}....", str);
}
private void doSendErpData(List<Map<String, Object>> dataList) {
log("开始发送数据");
logger.info("✦✦✦✦ EntrustSampleItemServiceImpl ✦✦✦✦ doSendErpData ✦✦✦✈ 开始发送数据!");
HttpHeaders headers = new HttpHeaders();
headers.add("token", getErpToken());
headers.add("Content-Type", HttpConst.CONTENT_TYPE);
headers.add("Accept-Encoding", HttpConst.ACCEPT_ENCODING);
headers.setContentType(MediaType.APPLICATION_JSON);
for (Map<String, Object> data : dataList) {
/*
String json = JSONObject.toJSONString(data);
log("要发送的样品数据为:" + json);
String result = OkHttpUtils.sendByPostJson(erpUrl, erpToken, json);
String result = OkHttpUtils.sendByPostJson(serviceProperties.buildErpUrl("SaveData"), getErpToken(), json);
log("发送结果:" + result);
if (StringUtils.isNotBlank(result)) {
JSONObject jsonObject = JSON.parseObject(result);
......@@ -1625,8 +1626,33 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
} else {
log("响应失败!,错误为:" + msg);
}
}*/
ErpRespResult result = ErpRequest.sendPost(serviceProperties.buildErpUrl("SaveData"), data, headers);
if (!result.success()) {
logger.error("✦✦✦✦ EntrustSampleItemServiceImpl ✦✦✦✦ doSendErpData ✦✦✦✈ :{}", JacksonUtils.toJSONString(result));
} else {
logger.info("✦✦✦✦ EntrustSampleItemServiceImpl ✦✦✦✦ doSendErpData ✦✦✦✈ 推送DPS数据成功,更新样品推送状态!");
entrustSampleService.update(new EntrustSample().setSendErp(1), Condition.create().eq("code", data.get("sample_code")));
}
}
}
private String getErpToken() {
String url = serviceProperties.buildWmsUrl("Login");
String token = "";
ErpRespResult<String> result = ErpRequest.sendGet(url, null, new TypeReference<ErpRespResult<String>>() {
});
if (result.success()) {
token = result.getMessage();
logger.info("✦✦✦✦ EntrustSampleItemServiceImpl ✦✦✦✦ getErpToken ✦✦✦✈ [token]: {}", token);
} else {
logger.error("✦✦✦✦ EntrustSampleItemServiceImpl ✦✦✦✦ getErpToken ✦✦✦✈ token获取失败!:{}", JacksonUtils.toJSONString(result));
// 若为空,使用默认token
token = serviceProperties.getErpToken();
logger.error("✦✦✦✦ EntrustSampleItemServiceImpl ✦✦✦✦ getErpToken ✦✦✦✈ 使用默认[token]:{}", token);
}
return token;
}
@Override
......@@ -1764,12 +1790,11 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
List<Map<String, Object>> mapList = entrustSampleItemIndexService.listSampleItemIndex(entrustIds, null);
RestAssert.fail(CollectionUtils.isEmpty(mapList), "数据为空,取消发送!");
try {
log("准备发送数据");
logger.info("✦✦✦✦ EntrustSampleItemServiceImpl ✦✦✦✦ sendErpData ✦✦✦✈ 准备发送数据!");
doSendErpData(mapList);
return true;
} catch (Exception e) {
log("请求失败,请稍后重试!");
logger.error("exception while sending data to server: {}", e.getMessage());
logger.error("✦✦✦✦ EntrustSampleItemServiceImpl ✦✦✦✦ sendErpData ✦✦✦✈ 发送数据时异常:", e);
RestAssert.fail("请求失败,请稍后重试!");
}
return false;
......
......@@ -2419,6 +2419,14 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
});
}
@Override
public List<EntrustSample> listByEntrustIds(List<Long> entrustIds) {
if (CollectionUtils.isEmpty(entrustIds)) {
return Collections.emptyList();
}
return list(Condition.<EntrustSample>wrapper().in("entrust_id", entrustIds));
}
private void doSendWmsEntrustData(String code, EntrustSample sample) {
logger.info("✦✦✦✦ EntrustSampleServiceImpl ✦✦✦✦ doSendWmsEntrustData ✦✦✦✈ 开始推送委托数据至WMS系统!");
String url = serviceProperties.buildWmsUrl(HttpConst.WMS_SYNC_WTBH);
......@@ -2428,7 +2436,7 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
map.put("MaterialName", sample.getName());
map.put("MaterialCode", sample.getNameCode());
map.put("CreateDate", new Date());
WmsRespResult result = WmsRequest.sendJson(url, map);
WmsRespResult result = WmsRequest.sendPost(url, map);
if (Objects.nonNull(result)) {
logger.info("✦✦✦✦ EntrustSampleServiceImpl ✦✦✦✦ doSendWmsEntrustData ✦✦✦✈ 委托信息推送WMS数据成功!");
return;
......
......@@ -1700,11 +1700,15 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
logger.error("进入提交委托流程......");
RestAssert.fail(null == ids || 0 == ids.length, "请选择要提交的委托!");
List<Entrust> entrustList = getBatchIds(Arrays.asList(ids));
List<Long> specialIds = new ArrayList<>(), normalIds = new ArrayList<>();
List<Long> specialIds = new ArrayList<>(),
normalIds = new ArrayList<>();
List<Long> sendUserIdList = new ArrayList<>();
List<EntrustSample> samples = entrustSampleService.listByEntrustIds(Arrays.asList(ids));
Map<Long, List<EntrustSample>> entrustSampleMap = new HashMap<>(8);
Optional.ofNullable(samples).ifPresent(dl -> dl.forEach(d -> MapMergeUtils.getorCreateMapArrayList(d.getEntrustId(), entrustSampleMap, d)));
for (Entrust entrust : entrustList) {
RestAssert.fail(!Objects.equals(entrust.getFlowStatus(), EntrustFlowEnum.DRAFT.name()), "只能提交草稿状态的委托!");
List<EntrustSample> sampleList = entrustSampleService.getByEntrustId(entrust.getId());
List<EntrustSample> sampleList = entrustSampleMap.get(entrust.getId());
RestAssert.fail(CollectionUtils.isEmpty(sampleList), String.format("委托编号为的【%s】样品为空!", entrust.getCode()));
// 若存在任何一个样品的编号为空,那么需要自动生成其编号
for (EntrustSample sample : sampleList) {
......
......@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.fasterxml.jackson.core.type.TypeReference;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.commons.toolkit.JacksonUtils;
import com.patzn.cloud.commons.toolkit.MapMergeUtils;
import com.patzn.cloud.service.hmhj.dto.*;
import com.patzn.cloud.service.hmhj.entity.CenterCost;
......@@ -272,7 +271,7 @@ public class StatisticsServiceImpl extends BaseServiceImpl<StatisticsMapper, Sta
@Override
public List<WmsInventory> getInventoryList(WmsInventoryDTO dto) {
List<WmsInventory> dataList = new ArrayList<>();
String url = serviceProperties.buildWmsUrl(HttpConst.WMS_SYNC_STOCK_SITUATION);
String url = serviceProperties.buildWmsUrl(HttpConst.WMS_SYNC_GET_SCREEN);
// 设置请求参数
HashMap<String, Object> map = new HashMap<>(2);
......@@ -292,9 +291,8 @@ public class StatisticsServiceImpl extends BaseServiceImpl<StatisticsMapper, Sta
map.put("Unit", dto.getUnit());
}
url = "https://mock.apifox.cn/m1/1293503-0-default/v1/stock/data";
try {
List<WmsInventoryData> inventoryList = WmsRequest.sendJson(url, map, new TypeReference<WmsRespResult<List<WmsInventoryData>>>() {
List<WmsInventoryData> inventoryList = WmsRequest.sendPost(url, map, new TypeReference<WmsRespResult<List<WmsInventoryData>>>() {
});
if (CollectionUtils.isNotEmpty(inventoryList)) {
return inventoryList.stream().map(d -> d.convert(WmsInventory.class)).collect(Collectors.toList());
......
......@@ -68,10 +68,10 @@ public class WmsStockServiceImpl extends BaseServiceImpl<WmsStockMapper, WmsStoc
@Override
public void syncWmsStockData() {
String url = serviceProperties.buildWmsUrl(HttpConst.WMS_SYNC_STOCK);
String url = serviceProperties.buildWmsUrl(HttpConst.WMS_SYNC_GET_UNIT_LOADS);
// 设置请求参数
HashMap<String, Object> map = new HashMap<>(2);
List<WmsStockData> dataList = WmsRequest.sendJson(url, map, new TypeReference<WmsRespResult<List<WmsStockData>>>() {
List<WmsStockData> dataList = WmsRequest.sendPost(url, map, new TypeReference<WmsRespResult<List<WmsStockData>>>() {
});
if (CollectionUtils.isEmpty(dataList)) {
logger.error("✦✦✦✦ WmsStockServiceImpl ✦✦✦✦ syncWmsStockData ✦✦✦✈ 出入库数据为空!");
......
......@@ -49,9 +49,6 @@ oss:
jobs:
admin-address: http://api.dev.patzn.com:7000/print
#libreOffice 安装信息
libreOffice:
url: C:/Program Files/LibreOffice
# ribbon 路由配置
food.ribbon.NFLoadBalancerRuleClassName: com.patzn.cloud.zuul.LocalRule
print.ribbon.NFLoadBalancerRuleClassName: com.patzn.cloud.zuul.LocalRule
......
......@@ -13,7 +13,7 @@ service:
province-item-url: http://60.216.97.250:8087/
soffice: /opt/libreoffice6.2/program/soffice
static-url: static.hmlims.com:9000
erp-url: http://192.168.0.216:5050/api/LimsData/SaveData
erp-url: http://192.168.0.216:5050/api/LimsData/
erp-token: VkI+Gi2pizx9uaX+xP+nXAgJKfcBevaruxijYtXXQdU577BLv3jdoLpnQ13BZ5hdPTD90jLmvlr7ygxh18kuLdD9Ha9MdTXIxWJKbNbBn6fnrHU/9lsXBnOVyOEB1DIXW0VQniyjuobU5qolBr2Y99NTQ/l9giZlXGVXAE+1WvY=
spring:
datasource:
......@@ -66,9 +66,6 @@ oss:
grid-fs: true
bucket-name: base
#libreOffice 安装信息
libreOffice:
url: D:/Program Files/LibreOffice
### jobs
jobs:
admin-address: http://api.hmlims.com:9000/print
\ No newline at end of file
......@@ -7,8 +7,6 @@ swagger:
service:
api-url: http://api.dev.patzn.com:7000
url: http://api.dev.patzn.com:7000
erp-url: http://192.168.0.19:5050/api/LimsData/SaveData
erp-token: VkI+Gi2pizx9uaX+xP+nXAgJKfcBevaruxijYtXXQdU577BLv3jdoLpnQ13BZ5hdPTD90jLmvlr7ygxh18kuLdD9Ha9MdTXIxWJKbNbBn6fnrHU/9lsXBnOVyOEB1DIXW0VQniyjuobU5qolBr2Y99NTQ/l9giZlXGVXAE+1WvY=
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
......@@ -54,9 +52,6 @@ oss:
jobs:
admin-address: http://api.dev.patzn.com:7000/print
#libreOffice 安装信息
libreOffice:
url: C:/Program Files/LibreOffice
# ribbon 路由配置
food.ribbon.NFLoadBalancerRuleClassName: com.patzn.cloud.zuul.LocalRule
print.ribbon.NFLoadBalancerRuleClassName: com.patzn.cloud.zuul.LocalRule
......
......@@ -7,15 +7,16 @@ server:
enabled: true
mime-types: application/json
service:
soffice: /opt/libreoffice6.2/program/soffice
url: http://api.dev.patzn.com:7000
api-url: http://api.dev.patzn.com:7000
erp-url: http://192.168.0.216:5050/api/LimsData/
wms-url: http://192.168.207.103:9001/InterfaceAddr/
soffice: /opt/libreoffice6.2/program/soffice
food-url: http://food.hmlims.com:9000
static-url: static.hmlims.com:9000
lib-office-url: D:/Program Files/LibreOffice
province-item-url: http://60.216.97.250:8087/
api-url: http://api.dev.patzn.com:7000
erp-url: http://192.168.0.216:5050/api/LimsData/SaveData
erp-token: VkI+Gi2pizx9uaX+xP+nXAgJKfcBevaruxijYtXXQdU577BLv3jdoLpnQ13BZ5hdPTD90jLmvlr7ygxh18kuLdD9Ha9MdTXIxWJKbNbBn6fnrHU/9lsXBnOVyOEB1DIXW0VQniyjuobU5qolBr2Y99NTQ/l9giZlXGVXAE+1WvY=
wms-url: http://192.168.207.103:9001/LIMS
spring:
# 环境 dev|test|pro
profiles:
......
package com.patzn.cloud.service.lims.test;
import org.apache.commons.lang.StringUtils;
public class IDWorkTest {
public static void main(String[] args) {
System.out.println(getCodeByCqCode("Y2204262017C"));
System.out.println(getCodeByCqCode("2110164032C12"));
System.out.println(getCodeByCqCode("Y2201086159C1"));
System.out.println(getCodeByCqCode("Y2112052110C2"));
}
private static String getCodeByCqCode(String code) {
//Y2204262017C
//2110164032C12
//Y2201086159C1
//Y2112052110C2
if (StringUtils.isBlank(code)) {
return code;
}
code = code.startsWith("Y") ? code : "Y" + code;
code = code.substring(0, 7) + "-" + code.substring(7, 11);
return code;
}
}
package com.patzn.cloud.service.lims.test;
import com.patzn.cloud.commons.toolkit.JacksonUtils;
import com.patzn.cloud.service.hmhj.entity.WmsStock;
import com.patzn.cloud.service.hmhj.vo.WmsStockData;
public class JsonObjectTest {
public static void main(String[] args) {
// language=JSON
String json = "{\"ContainerCode\": \"1111\",\"Wtbh\": \"2033333323\"}";
WmsStockData stock = JacksonUtils.readValue(json, WmsStockData.class);
System.out.println(stock.getContainerCode());
System.out.println(stock.getWtbh());
}
}
package com.patzn.cloud.service.lims.test;
import com.patzn.cloud.service.lims.common.StringHandleUtils;
import org.apache.commons.lang3.StringUtils;
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Test {
public static void main(String[] args) {
System.out.println(getTestValue("65.475", 2));
System.out.println(getTestValue("0.1952", 2));
System.out.println(getTestValue("0.2056", 2));
}
private static String getTestValue(String value, int roundNum) {
if (StringUtils.isNotBlank(value)) {
if (!StringHandleUtils.validateNumber(value)) {
if (value.startsWith("!")) {
value = value.substring(1);
} else {
return value;
}
}
// IF(ABS(TRUNC(A1,B1+5)*10^B1-TRUNC(A1,B1+5)*10^B1)<0.499999,ROUND(A1,B1),
// IF(ABS(TRUNC(A1,B1+5)*10^B1-TRUNC(A1,B1+5)*10^B1)>0.500001,ROUND(A1,B1),
// CEILING(ABS(TRUNC(A1,B1+1)-0.5*10^(-B1),2*10^(-B1)*SIGN(A1)))
int beginIndex = value.lastIndexOf(".") + 1, valueLength = value.length();
String intVal = value.substring(0, value.indexOf(".") + 1);
int remindLength = valueLength - beginIndex;
String truncValue = "", zeroStr = "000000000";
// bdA = TRUNC(A1,B1+5)*10^B1
if (remindLength >= roundNum + 5) {
truncValue = intVal + value.substring(beginIndex, beginIndex + roundNum + 5);
} else {
truncValue = intVal + value.substring(beginIndex) + zeroStr.substring(0, roundNum + 5 - remindLength);
}
BigDecimal bdDiff = new BigDecimal(truncValue).scaleByPowerOfTen(roundNum);
// bdB = TRUNC(A1,B1+5)*10^B1
if (remindLength >= roundNum) {
truncValue = intVal + value.substring(beginIndex, beginIndex + roundNum);
} else {
truncValue = intVal + value.substring(beginIndex) + zeroStr.substring(0, roundNum - remindLength);
}
bdDiff = bdDiff.subtract(new BigDecimal(truncValue).scaleByPowerOfTen(roundNum)).abs();
// 若 < 0.499999 或 大于 0.500001
if (bdDiff.compareTo(new BigDecimal("0.499999")) < 0 || bdDiff.compareTo(new BigDecimal("0.500001")) > 0) {
return new BigDecimal(value).setScale(roundNum, RoundingMode.HALF_EVEN).toPlainString();
}
// 处理第三种情况
// CEILING(ABS(TRUNC(A1,B1+1)-0.5*10^(-B1),2*10^(-B1)*SIGN(A1))
if (remindLength >= roundNum + 1) {
truncValue = intVal + value.substring(beginIndex, beginIndex + roundNum + 1);
} else {
truncValue = intVal + value.substring(beginIndex) + zeroStr.substring(0, roundNum + 1 - remindLength);
}
bdDiff = new BigDecimal(truncValue);
bdDiff = bdDiff.subtract(new BigDecimal("0.5").scaleByPowerOfTen(-roundNum)).abs();
int signValue = Double.valueOf(value).compareTo(0.0);
BigDecimal significance = new BigDecimal("2").scaleByPowerOfTen(-roundNum).multiply(BigDecimal.valueOf(signValue)).abs();
// ceiling
BigDecimal[] result = bdDiff.divideAndRemainder(significance);
if (result[1].compareTo(BigDecimal.ZERO) == 0) {
return bdDiff.setScale(roundNum).toPlainString();
} else {
return result[0].add(BigDecimal.ONE).multiply(significance).setScale(roundNum).toPlainString();
}
}
return value;
}
private static String rounding(String value, Integer roundNum) {
if (StringUtils.isNotBlank(value)) {
if (!StringHandleUtils.validateNumber(value)) {
if (value.startsWith("!")) {
value = value.substring(1);
} else {
return value;
}
}
BigDecimal bd1 = new BigDecimal(value);
BigDecimal bd2 = bd1.setScale(roundNum, BigDecimal.ROUND_HALF_EVEN);
return bd2.toPlainString();
}
return "";
}
}
package com.patzn.cloud.service.lims.test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class TestThreadLocal {
public static ExecutorService executorService = Executors.newFixedThreadPool(16);
private static SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static void main(String[] args) throws InterruptedException {
for (int i=0;i<1000;i++){
executorService.submit(new Runnable() {
@Override
public void run() {
String format = simpleDateFormat.format(new Date());
try {
Date parse = simpleDateFormat.parse("2021-09-01 00:00:00");
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(format);
}
});
}
Thread.sleep(3000);
executorService.shutdownNow();
}
}
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