Commit 4f203a77 by yinyong

未对账物流费

parent 6692d5c9
......@@ -3,6 +3,7 @@ package com.bailuntec;
import com.alibaba.druid.pool.DruidDataSource;
import com.bailuntec.job.FbaStockJob;
import com.bailuntec.job.WmsLogisticsJob;
import com.bailuntec.job.WmsLogisticsReconciliationJob;
import com.bailuntec.job.WmsStockJob;
import com.bailuntec.listener.FbaStockListener;
import com.bailuntec.listener.WmsStockListener;
......@@ -31,6 +32,7 @@ public class Application {
new JobScheduler(createRegistryCenter(),createJobConfiguration(),createJobEventConfiguration(),new FbaStockListener()).init();
new JobScheduler(createRegistryCenter(),createJobConfiguration1(),createJobEventConfiguration(),new WmsStockListener()).init();
new JobScheduler(createRegistryCenter(),createJobConfiguration2()).init();
new JobScheduler(createRegistryCenter(),createJobConfiguration3()).init();
}
private static CoordinatorRegistryCenter createRegistryCenter() {
......@@ -60,6 +62,13 @@ public class Application {
return simpleJobRootConfig;
}
private static LiteJobConfiguration createJobConfiguration3() {
JobCoreConfiguration simpleCoreConfig = JobCoreConfiguration.newBuilder(propertiesUtil.getPropertyAsString("JOB_NAME_LOGISTICS_RECONCILIATION"), propertiesUtil.getPropertyAsString("JOB_CRON_LOGISTICS_RECONCILIATION"), propertiesUtil.getPropertyAsInt("SHARDING_TOTAL_COUNT")).build();
SimpleJobConfiguration simpleJobConfig = new SimpleJobConfiguration(simpleCoreConfig, WmsLogisticsReconciliationJob.class.getCanonicalName());
LiteJobConfiguration simpleJobRootConfig = LiteJobConfiguration.newBuilder(simpleJobConfig).build();
return simpleJobRootConfig;
}
private static JobEventConfiguration createJobEventConfiguration() {
JobEventConfiguration jobEventRdbConfig = new JobEventRdbConfiguration(setUpEventTraceDataSource());
return jobEventRdbConfig;
......
package com.bailuntec.domain.pojo;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@Data
public class LogisticsReconciliation {
private List<String> Company_Codes;
private String TrackingNo;
private String AllocatecargoOrderCode;
private LocalDateTime StartModificationTime;
private LocalDateTime EndModificationTime;
private Integer pageIndex;
private Integer pageCount;
private String FeeCode;
private List<String> DiffStateTypes;
}
package com.bailuntec.domain.pojo;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class WmsLogisticsReconciliationInfo {
private String targetUrl;
private Boolean success;
private String error;
private String unAuthorizedRequest;
private Result result;
@Data
public class Result{
private Integer pageIndex;
private Integer totalPages;
private Integer total;
private Boolean hasPreViousPage;
private Boolean hasNextPage;
private List<LogisticsInner> result;
@Data
public class LogisticsInner{
@JSONField(name = "gmt_id")
private Integer id;
@JSONField(name = "id")
private Integer wmsId;
private String companyCode;
private String companyName;
private String lineCode;
private String lineName;
private String allocatecargoordercode;
private String yicangno;
private String trackingno;
private LocalDateTime shipmenttime;
private BigDecimal outputweightkg;
private BigDecimal bailunshipmentcostcny;
private BigDecimal merchantoutputweightkg;
private BigDecimal merchantshipmentcostcny;
private LocalDateTime merchantreconciliationtime;
private String reconciliationstatus;
private String weightdiff;
private String costdiff;
private String weightspecificdiff;
private LocalDateTime thisreconciliatetime;
private LocalDateTime originalscanningtime;
private String wareno;
private String reconciliationuser;
private String audituser;
private String auditstatus;
private String auditremark;
private String remark;
private BigDecimal confirmshipmentcostcny;
private BigDecimal confirmoutputweightkg;
private String createuser;
private LocalDateTime creationtime;
private LocalDateTime lastmodificationtime;
}
}
}
package com.bailuntec.job;
import com.alibaba.fastjson.JSON;
import com.bailuntec.domain.entity.DcBaseLogisticsReconciliation;
import com.bailuntec.domain.entity.JobPointLog;
import com.bailuntec.domain.example.DcBaseLogisticsExample;
import com.bailuntec.domain.example.DcBaseLogisticsReconciliationExample;
import com.bailuntec.domain.pojo.LogisticsReconciliation;
import com.bailuntec.domain.pojo.WmsLogisticsReconciliationInfo;
import com.bailuntec.mapper.DcBaseLogisticsReconciliationMapper;
import com.bailuntec.support.PointJob;
import com.bailuntec.utils.OkHttpUtil;
import com.bailuntec.utils.PropertiesUtil;
import com.bailuntec.utils.SessionUtil;
import com.dangdang.ddframe.job.api.ShardingContext;
import lombok.extern.slf4j.Slf4j;
import okhttp3.*;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang3.StringUtils;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
@Slf4j
public class WmsLogisticsReconciliationJob extends PointJob {
private PropertiesUtil propertiesUtil = PropertiesUtil.getInstance("const");
@Override
public void executeJob(ShardingContext shardingContext, JobPointLog jobPointLog) {
LogisticsReconciliation logisticsReconciliation = new LogisticsReconciliation();
logisticsReconciliation.setStartModificationTime(jobPointLog.getStartTime().minusHours(9));
logisticsReconciliation.setEndModificationTime(jobPointLog.getEndTime());
logisticsReconciliation.setPageCount(jobPointLog.getPageSize());
logisticsReconciliation.setDiffStateTypes(Arrays.asList("0"));
do {
OkHttpClient client = OkHttpUtil.getInstance();
MediaType mediaType = MediaType.parse("application/json");
logisticsReconciliation.setPageIndex(jobPointLog.getPageIndex() > 0? jobPointLog.getPageIndex() : 1);
RequestBody body = RequestBody.create(mediaType, JSON.toJSONString(logisticsReconciliation));
Request request = new Request.Builder()
.url(propertiesUtil.getPropertyAsString("LOGISTICS_WMS_RECONCILIATION_URL"))
.post(body)
.addHeader("Content-Type", "application/json")
.build();
Response response = null;
String resultStr = null;
try {
response = client.newCall(request).execute();
resultStr = response.body().string();
} catch (IOException e) {
throw new RuntimeException("调用wms系统库存接口失败", e);
} finally {
if (response != null) {
response.close();
}
}
if (StringUtils.isNotBlank(resultStr)) {
WmsLogisticsReconciliationInfo wmsLogisticsReconciliationInfo = JSON.parseObject(resultStr, WmsLogisticsReconciliationInfo.class);
if (wmsLogisticsReconciliationInfo.getSuccess() != null && wmsLogisticsReconciliationInfo.getSuccess()) {
WmsLogisticsReconciliationInfo.Result result = wmsLogisticsReconciliationInfo.getResult();
List<WmsLogisticsReconciliationInfo.Result.LogisticsInner> items = result.getResult();
if (jobPointLog.getPageIndex().equals(0)) {
int totalPage = result.getTotal() % jobPointLog.getPageSize() == 0 ? result.getTotal() / jobPointLog.getPageSize() : result.getTotal() / jobPointLog.getPageSize() + 1;
jobPointLog.setPageIndex(totalPage + 1);
}
if (items != null && items.size() > 0) {
try {
DcBaseLogisticsReconciliationMapper dcBaseLogisticsReconciliationMapper = SessionUtil.getSession().getMapper(DcBaseLogisticsReconciliationMapper.class);
DcBaseLogisticsReconciliation dcBaseLogisticsReconciliation = new DcBaseLogisticsReconciliation();
items.forEach(wmsStockItem -> {
try {
BeanUtils.copyProperties(dcBaseLogisticsReconciliation, wmsStockItem);
dcBaseLogisticsReconciliation.setOutputweightkg(dcBaseLogisticsReconciliation.getOutputweightkg() == null ? BigDecimal.ZERO : dcBaseLogisticsReconciliation.getOutputweightkg().setScale(4, RoundingMode.HALF_EVEN));
dcBaseLogisticsReconciliation.setBailunshipmentcostcny(dcBaseLogisticsReconciliation.getBailunshipmentcostcny() == null ? BigDecimal.ZERO : dcBaseLogisticsReconciliation.getBailunshipmentcostcny().setScale(4, RoundingMode.HALF_EVEN));
dcBaseLogisticsReconciliation.setMerchantoutputweightkg(dcBaseLogisticsReconciliation.getMerchantoutputweightkg() == null ? BigDecimal.ZERO : dcBaseLogisticsReconciliation.getMerchantoutputweightkg().setScale(4, RoundingMode.HALF_EVEN));
dcBaseLogisticsReconciliation.setMerchantshipmentcostcny(dcBaseLogisticsReconciliation.getMerchantshipmentcostcny() == null ? BigDecimal.ZERO : dcBaseLogisticsReconciliation.getMerchantshipmentcostcny().setScale(4, RoundingMode.HALF_EVEN));
dcBaseLogisticsReconciliation.setConfirmshipmentcostcny(dcBaseLogisticsReconciliation.getConfirmshipmentcostcny() == null ? BigDecimal.ZERO : dcBaseLogisticsReconciliation.getConfirmshipmentcostcny().setScale(4, RoundingMode.HALF_EVEN));
dcBaseLogisticsReconciliation.setConfirmoutputweightkg(dcBaseLogisticsReconciliation.getConfirmoutputweightkg() == null ? BigDecimal.ZERO : dcBaseLogisticsReconciliation.getConfirmoutputweightkg().setScale(4, RoundingMode.HALF_EVEN));
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("WMS物流BeanUtils.copyProperties失败");
}
int i = dcBaseLogisticsReconciliationMapper.updateByExampleSelective(dcBaseLogisticsReconciliation, DcBaseLogisticsReconciliationExample.newAndCreateCriteria().andWmsIdEqualTo(dcBaseLogisticsReconciliation.getWmsId()).example());
if (i == 0) {
dcBaseLogisticsReconciliationMapper.insertSelective(dcBaseLogisticsReconciliation);
}
});
/*if (jobPointLog.getPageIndex() % 5 == 0) {
JobPointLogMapper jobPointLogMapper = SessionUtil.getSession().getMapper(JobPointLogMapper.class);
jobPointLogMapper.upsertSelective(jobPointLog);
}*/
} catch (Exception e) {
throw new RuntimeException("MYBATIS操作DB失败", e);
} finally {
SessionUtil.closeSession();
}
}
} else {
throw new RuntimeException("调用wms物流费接口失败");
}
} else {
throw new RuntimeException("调用wms物流费接口失败");
}
jobPointLog.setPageIndex(jobPointLog.getPageIndex() - 1);
} while (jobPointLog.getPageIndex() > 0);
jobPointLog.setPageIndex(0);
jobPointLog.setStartTime(jobPointLog.getEndTime());
jobPointLog.setEndTime(jobPointLog.getStartTime().plusDays(jobPointLog.getIntervalTime()).isAfter(LocalDateTime.now()) ? LocalDateTime.now() : jobPointLog.getEndTime().plusDays(jobPointLog.getIntervalTime()));
}
}
......@@ -3,4 +3,5 @@ STOCK_WMS_URL=http://172.31.255.247/api/services/app/WMSStockService/SearchAllPr
#STOCK_FBA_URL=http://api.wms.bailuntec.com/api/services/app/ThirdStockFbaService/GetFbaStocks
#STOCK_WMS_URL=http://api.wms.bailuntec.com/api/services/app/WMSStockService/SearchAllProductStockByPage
LOGISTICS_WMS_URL=http://wms.bailuntec.com/api/services/app/LogisticsReconciliationService/GetNormalDataQuery
\ No newline at end of file
LOGISTICS_WMS_URL=http://wms.bailuntec.com/api/services/app/LogisticsReconciliationService/GetNormalDataQuery
LOGISTICS_WMS_RECONCILIATION_URL=http://wms.bailuntec.com/api/services/app/LogisticsReconciliationService/GetBaseDataQuery
\ No newline at end of file
......@@ -15,4 +15,6 @@ JOB_NAME_WMS=base-sync-stock-wms
JOB_CRON_WMS=0/1 * * * * ? *
JOB_NAME_LOGISTICS=base-sync-logistics-wms
JOB_CRON_LOGISTICS=0/1 * * * * ? *
JOB_NAME_LOGISTICS_RECONCILIATION=base-sync-logistics-reconciliation
JOB_CRON_LOGISTICS_RECONCILIATION=0 30 23 * * ? *
SHARDING_TOTAL_COUNT=1
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
package com.bailuntec.mapper;
import com.bailuntec.domain.entity.DcBaseLogisticsReconciliation;
import com.bailuntec.domain.example.DcBaseLogisticsReconciliationExample;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface DcBaseLogisticsReconciliationMapper {
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dc_base_logistics_reconciliation
*
* @mbg.generated
*/
long countByExample(DcBaseLogisticsReconciliationExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dc_base_logistics_reconciliation
*
* @mbg.generated
*/
int deleteByExample(DcBaseLogisticsReconciliationExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dc_base_logistics_reconciliation
*
* @mbg.generated
*/
int deleteByPrimaryKey(Integer id);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dc_base_logistics_reconciliation
*
* @mbg.generated
*/
int insert(DcBaseLogisticsReconciliation record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dc_base_logistics_reconciliation
*
* @mbg.generated
*/
int insertSelective(DcBaseLogisticsReconciliation record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dc_base_logistics_reconciliation
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
DcBaseLogisticsReconciliation selectOneByExample(DcBaseLogisticsReconciliationExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dc_base_logistics_reconciliation
*
* @mbg.generated
*/
List<DcBaseLogisticsReconciliation> selectByExample(DcBaseLogisticsReconciliationExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dc_base_logistics_reconciliation
*
* @mbg.generated
*/
DcBaseLogisticsReconciliation selectByPrimaryKey(Integer id);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dc_base_logistics_reconciliation
*
* @mbg.generated
*/
int updateByExampleSelective(@Param("record") DcBaseLogisticsReconciliation record, @Param("example") DcBaseLogisticsReconciliationExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dc_base_logistics_reconciliation
*
* @mbg.generated
*/
int updateByExample(@Param("record") DcBaseLogisticsReconciliation record, @Param("example") DcBaseLogisticsReconciliationExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dc_base_logistics_reconciliation
*
* @mbg.generated
*/
int updateByPrimaryKeySelective(DcBaseLogisticsReconciliation record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dc_base_logistics_reconciliation
*
* @mbg.generated
*/
int updateByPrimaryKey(DcBaseLogisticsReconciliation record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dc_base_logistics_reconciliation
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
int upsert(DcBaseLogisticsReconciliation record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dc_base_logistics_reconciliation
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
int upsertSelective(DcBaseLogisticsReconciliation record);
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment