Commit d9cf5d96 by yinyong

ebay代码调整

parent ea568715
package com.bailuntec.domain.dto;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
public class DcBaseEbaySkuMappingDto {
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column dc_base_ebay_sku_mapping.item_id
*
* @mbg.generated
*/
private String itemId;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column dc_base_ebay_sku_mapping.sku_code
*
* @mbg.generated
*/
private String skuCode;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column dc_base_ebay_sku_mapping.platform_code
*
* @mbg.generated
*/
private String platformCode;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column dc_base_ebay_sku_mapping.has_publish
*
* @mbg.generated
*/
private Integer hasPublish;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column dc_base_ebay_sku_mapping.gmt_create
*
* @mbg.generated
*/
private LocalDateTime gmtCreate;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column dc_base_ebay_sku_mapping.gmt_modify
*
* @mbg.generated
*/
private LocalDateTime gmtModify;
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dc_base_ebay_sku_mapping
*
* @mbg.generated
*/
private BigDecimal unitPrice;
}
\ No newline at end of file
......@@ -156,5 +156,5 @@ public class DcBaseFinanceEbayItemDto {
*/
private Date reportDate;
private List<DcBaseSkuMappingItemDto> dcBaseSkuMappingList;
private List<DcBaseEbaySkuMappingDto> dcBaseSkuMappingList;
}
\ No newline at end of file
......@@ -1020,12 +1020,12 @@
<result column="exchange_rate" jdbcType="DECIMAL" property="exchangeRate" />
<result column="exchange_rate_usd" jdbcType="DECIMAL" property="exchangeRateUsd" />
<result column="report_date" jdbcType="DATE" property="reportDate" />
<collection property="dcBaseSkuMappingList" column="item_id" ofType="com.bailuntec.domain.dto.DcBaseSkuMappingItemDto" select="selectSkuMapping">
<collection property="dcBaseSkuMappingList" column="item_id" ofType="com.bailuntec.domain.dto.DcBaseEbaySkuMappingDto" select="selectSkuMapping">
</collection>
</resultMap>
<select id="selectSkuMapping" resultType="com.bailuntec.domain.dto.DcBaseSkuMappingItemDto">
select dc0.*, dc1.unit_price from dc_base_sku_mapping dc0 left join dc_base_sku dc1 on dc0.bailun_sku = dc1.bailun_sku where dc0.item_id = #{itemId} and dc0.has_deleted = 0
<select id="selectSkuMapping" resultType="com.bailuntec.domain.dto.DcBaseEbaySkuMappingDto">
select dc0.*, dc1.unit_price from dc_base_ebay_sku_mapping dc0 left join dc_base_sku dc1 on dc0.sku_code = dc1.bailun_sku where dc0.item_id = #{itemId}
</select>
<resultMap id="BaseResultMap2" type="com.bailuntec.domain.dto.DcBaseFinanceEbayItemDto">
......@@ -1053,48 +1053,39 @@
</resultMap>
<!--calculate start-->
<select id="selectEbayList" resultMap="BaseResultMap2">
<select id="selectEbayList" resultMap="BaseResultMap1">
select * from dc_base_finance_ebay
where bj_date &gt;= #{startTime} and bj_date &lt; #{endTime}
order by id asc
limit ${pageIndex * pageSize} , #{pageSize}
</select>
<select id="selectEbayList1" resultMap="BaseResultMap2">
select * from dc_base_finance_ebay
where bj_date &gt;= #{startTime} and bj_date &lt; #{endTime}
and id &gt;= #{type}
order by id asc
limit ${pageIndex * pageSize} , #{pageSize}
</select>
<select id="selectSkuPrice" resultType="java.math.BigDecimal">
select unit_price from dc_base_sku where bailun_sku = #{skuCode}
</select>
<!--calculate end-->
<!-- ebayitem start -->
<select id="countByGroup" resultType="java.lang.Long">
select count(1) from (select item_id from dc_base_finance_ebay
where bj_date &gt;= #{startTime} and bj_date &lt; #{endTime} group by item_id) b
</select>
<select id="selectEbayItem" resultType="java.lang.String">
select item_id from dc_base_finance_ebay
<select id="selectEbay" resultMap="BaseResultMap2">
select * from dc_base_finance_ebay
where bj_date &gt;= #{startTime} and bj_date &lt; #{endTime}
group by item_id
order by id asc
limit ${pageIndex * pageSize} , #{pageSize}
</select>
<select id="selectEbay" resultMap="BaseResultMap2">
select * from dc_base_finance_ebay
<select id="selectEbayItem" resultType="java.lang.String">
select item_id from dc_base_finance_ebay
where bj_date &gt;= #{startTime} and bj_date &lt; #{endTime}
group by item_id
order by id asc
limit ${pageIndex * pageSize} , #{pageSize}
</select>
<!-- ebayitem end -->
</mapper>
\ No newline at end of file
......@@ -2,6 +2,7 @@ package com.bailuntec.job;
import com.alibaba.fastjson.JSON;
import com.bailuntec.domain.constant.EbaySkuMappingRoot;
import com.bailuntec.domain.dto.DcBaseEbaySkuMappingDto;
import com.bailuntec.domain.dto.DcBaseFinanceEbayItemDto;
import com.bailuntec.domain.entity.*;
import com.bailuntec.domain.example.DcBaseFinanceEbayExample;
......@@ -38,13 +39,7 @@ public class CalculateEbayItemJob extends PointJob {
DcBaseFinanceEbayItemMapper dcBaseFinanceEbayItemMapper = SessionUtil.getSession().getMapper(DcBaseFinanceEbayItemMapper.class);
dcBaseFinanceEbayItemMapper.deleteByExample(DcBaseFinanceEbayItemExample.newAndCreateCriteria().andBjDateGreaterThanOrEqualTo(jobPointLog.getStartTime()).andBjDateLessThan(jobPointLog.getEndTime()).example());
DcBaseFinanceEbayMapper dcBaseFinanceEbayMapper = SessionUtil.getSession().getMapper(DcBaseFinanceEbayMapper.class);
if (StringUtils.isBlank(shardingContext.getJobParameter())) {
countEbayFee = dcBaseFinanceEbayMapper.countByExample(DcBaseFinanceEbayExample.newAndCreateCriteria().andBjDateGreaterThanOrEqualTo(jobPointLog.getStartTime()).andBjDateLessThan(jobPointLog.getEndTime()).example());
}else {
Integer jobParameter = Integer.parseInt(shardingContext.getJobParameter());
countEbayFee = dcBaseFinanceEbayMapper.countByExample(DcBaseFinanceEbayExample.newAndCreateCriteria().andBjDateGreaterThanOrEqualTo(jobPointLog.getStartTime()).andBjDateLessThan(jobPointLog.getEndTime()).andIdGreaterThanOrEqualTo(jobParameter).example());
}
countEbayFee = dcBaseFinanceEbayMapper.countByExample(DcBaseFinanceEbayExample.newAndCreateCriteria().andBjDateGreaterThanOrEqualTo(jobPointLog.getStartTime()).andBjDateLessThan(jobPointLog.getEndTime()).example());
}catch (Exception e){
e.printStackTrace();
throw new RuntimeException("MYBATIS操作DB失败", e);
......@@ -58,58 +53,105 @@ public class CalculateEbayItemJob extends PointJob {
List<DcBaseFinanceEbayItemDto> dcBaseFinanceEbayItemDtoList;
try{
DcBaseFinanceEbayMapper dcBaseFinanceEbayMapper = SessionUtil.getSession().getMapper(DcBaseFinanceEbayMapper.class);
if(StringUtils.isBlank(shardingContext.getJobParameter())){
dcBaseFinanceEbayItemDtoList = dcBaseFinanceEbayMapper.selectEbayList(jobPointLog);
}else{
if(jobPointLog.getType() != 0) {
}
jobPointLog.setType(Integer.parseInt(shardingContext.getJobParameter()));
dcBaseFinanceEbayItemDtoList = dcBaseFinanceEbayMapper.selectEbayList1(jobPointLog);
}
dcBaseFinanceEbayItemDtoList = dcBaseFinanceEbayMapper.selectEbayList(jobPointLog);
for(DcBaseFinanceEbayItemDto dcBaseFinanceEbayItemDto : dcBaseFinanceEbayItemDtoList) {
List<String> list = new ArrayList<>();
list.add(dcBaseFinanceEbayItemDto.getItemId());
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, JSON.toJSONString(list));
Request request = new Request.Builder()
.url(propertiesUtil.getPropertyAsString("getSkuCodeInfoByItemId"))
.post(body)
.addHeader("Content-Type", "application/json")
.build();
Response response = null;
String ebaySkuMappingStr = null;
try {
response = okHttpClient.newCall(request).execute();
ebaySkuMappingStr = response.body().string();
} catch (IOException e) {
throw new RuntimeException(dcBaseFinanceEbayItemDto.getItemId() + "请求ebay广告费映射失败" + response, e);
} finally {
if (response != null) {
response.close();
if(dcBaseFinanceEbayItemDto.getDcBaseSkuMappingList() != null && dcBaseFinanceEbayItemDto.getDcBaseSkuMappingList().size() > 0) {
BigDecimal totalUnitPrice = getTotalUnitPrice0(dcBaseFinanceEbayItemDto.getDcBaseSkuMappingList());
for(DcBaseEbaySkuMappingDto dcBaseEbaySkuMappingDto : dcBaseFinanceEbayItemDto.getDcBaseSkuMappingList()) {
DcBaseFinanceEbayItem dcBaseFinanceEbayItem = new DcBaseFinanceEbayItem();
BeanUtils.copyProperties(dcBaseFinanceEbayItem, dcBaseEbaySkuMappingDto);
BigDecimal unitPrice = dcBaseEbaySkuMappingDto.getUnitPrice() == null ? BigDecimal.ZERO : dcBaseEbaySkuMappingDto.getUnitPrice();
BigDecimal unitPriceRadio;
if(totalUnitPrice.compareTo(BigDecimal.ZERO) == 0) {
unitPriceRadio = BigDecimal.ONE.divide(BigDecimal.valueOf(dcBaseFinanceEbayItemDto.getDcBaseSkuMappingList().size()), 3, RoundingMode.HALF_EVEN);
}else {
unitPriceRadio = unitPrice.divide(totalUnitPrice, 3, RoundingMode.HALF_EVEN);
}
dcBaseFinanceEbayItem.setBailunSku(dcBaseEbaySkuMappingDto.getSkuCode());
dcBaseFinanceEbayItem.setSkuRatio(unitPriceRadio);
dcBaseFinanceEbayItem.setSkuAmount(dcBaseFinanceEbayItemDto.getGrossAmount().multiply(unitPriceRadio));
dcBaseFinanceEbayItem.setAccountId(dcBaseFinanceEbayItemDto.getAccountId());
dcBaseFinanceEbayItem.setGrossAmount(dcBaseFinanceEbayItemDto.getGrossAmount());
dcBaseFinanceEbayItem.setAccountEntryType(dcBaseFinanceEbayItemDto.getAccountEntryType());
dcBaseFinanceEbayItem.setBjDate(dcBaseFinanceEbayItemDto.getBjDate());
dcBaseFinanceEbayItem.setGmtDate(dcBaseFinanceEbayItemDto.getGmtDate());
dcBaseFinanceEbayItem.setItemId(dcBaseFinanceEbayItemDto.getItemId());
dcBaseFinanceEbayItem.setEbayId(dcBaseFinanceEbayItemDto.getId());
dcBaseFinanceEbayItem.setCurrency(dcBaseFinanceEbayItemDto.getCurrency());
dcBaseFinanceEbayItem.setExchangeRate(dcBaseFinanceEbayItemDto.getExchangeRate());
dcBaseFinanceEbayItem.setExchangeRateUsd(dcBaseFinanceEbayItemDto.getExchangeRateUsd());
dcBaseFinanceEbayItem.setSkuCount(1);
if(dcBaseFinanceEbayItem.getBailunSku() == null) {
dcBaseFinanceEbayItem.setBailunSku("无");
}
DcBaseFinanceEbayItemMapper dcBaseFinanceEbayItemMapper = SessionUtil.getSession().getMapper(DcBaseFinanceEbayItemMapper.class);
dcBaseFinanceEbayItemMapper.insertSelective(dcBaseFinanceEbayItem);
}
}
if (StringUtils.isNoneBlank(ebaySkuMappingStr)) {
EbaySkuMappingRoot ebaySkuMappingRoot = JSON.parseObject(ebaySkuMappingStr, EbaySkuMappingRoot.class);
if (ebaySkuMappingRoot != null && ebaySkuMappingRoot.getIsSucceeded().booleanValue()) {
List<DcBaseEbaySkuMapping> dcBaseEbaySkuMappingList = ebaySkuMappingRoot.getObjData();
if (dcBaseEbaySkuMappingList != null && dcBaseEbaySkuMappingList.size() > 0) {
BigDecimal totalUnitPrice = getTotalUnitPrice(dcBaseEbaySkuMappingList);
for(DcBaseEbaySkuMapping ebaySkuMapping : dcBaseEbaySkuMappingList) {
DcBaseFinanceEbayItem dcBaseFinanceEbayItem = new DcBaseFinanceEbayItem();
BeanUtils.copyProperties(dcBaseFinanceEbayItem, dcBaseFinanceEbayItemDto);
BigDecimal unitPriceRadio;
if(totalUnitPrice.compareTo(BigDecimal.ZERO) == 0) {
unitPriceRadio = BigDecimal.ONE.divide(BigDecimal.valueOf(dcBaseEbaySkuMappingList.size()), 3, RoundingMode.HALF_EVEN);
}else {
unitPriceRadio = ebaySkuMapping.getSkuPrice().divide(totalUnitPrice, 3, RoundingMode.HALF_EVEN);
}else{
List<String> list = new ArrayList<>();
list.add(dcBaseFinanceEbayItemDto.getItemId());
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, JSON.toJSONString(list));
Request request = new Request.Builder()
.url(propertiesUtil.getPropertyAsString("getSkuCodeInfoByItemId"))
.post(body)
.addHeader("Content-Type", "application/json")
.build();
Response response = null;
String ebaySkuMappingStr = null;
try {
response = okHttpClient.newCall(request).execute();
ebaySkuMappingStr = response.body().string();
} catch (IOException e) {
throw new RuntimeException(dcBaseFinanceEbayItemDto.getItemId() + "请求ebay广告费映射失败" + response, e);
} finally {
if (response != null) {
response.close();
}
}
if (StringUtils.isNoneBlank(ebaySkuMappingStr)) {
EbaySkuMappingRoot ebaySkuMappingRoot = JSON.parseObject(ebaySkuMappingStr, EbaySkuMappingRoot.class);
if (ebaySkuMappingRoot != null && ebaySkuMappingRoot.getIsSucceeded().booleanValue()) {
List<DcBaseEbaySkuMapping> dcBaseEbaySkuMappingList = ebaySkuMappingRoot.getObjData();
if (dcBaseEbaySkuMappingList != null && dcBaseEbaySkuMappingList.size() > 0) {
BigDecimal totalUnitPrice = getTotalUnitPrice(dcBaseEbaySkuMappingList);
for(DcBaseEbaySkuMapping ebaySkuMapping : dcBaseEbaySkuMappingList) {
DcBaseFinanceEbayItem dcBaseFinanceEbayItem = new DcBaseFinanceEbayItem();
BeanUtils.copyProperties(dcBaseFinanceEbayItem, dcBaseFinanceEbayItemDto);
BigDecimal unitPriceRadio;
if(totalUnitPrice.compareTo(BigDecimal.ZERO) == 0) {
unitPriceRadio = BigDecimal.ONE.divide(BigDecimal.valueOf(dcBaseEbaySkuMappingList.size()), 3, RoundingMode.HALF_EVEN);
}else {
unitPriceRadio = ebaySkuMapping.getSkuPrice().divide(totalUnitPrice, 3, RoundingMode.HALF_EVEN);
}
dcBaseFinanceEbayItem.setSkuRatio(unitPriceRadio);
dcBaseFinanceEbayItem.setSkuAmount(dcBaseFinanceEbayItemDto.getGrossAmount().multiply(unitPriceRadio));
dcBaseFinanceEbayItem.setAccountId(dcBaseFinanceEbayItemDto.getAccountId());
dcBaseFinanceEbayItem.setGrossAmount(dcBaseFinanceEbayItemDto.getGrossAmount());
dcBaseFinanceEbayItem.setAccountEntryType(dcBaseFinanceEbayItemDto.getAccountEntryType());
dcBaseFinanceEbayItem.setBjDate(dcBaseFinanceEbayItemDto.getBjDate());
dcBaseFinanceEbayItem.setGmtDate(dcBaseFinanceEbayItemDto.getGmtDate());
dcBaseFinanceEbayItem.setItemId(dcBaseFinanceEbayItemDto.getItemId());
dcBaseFinanceEbayItem.setEbayId(dcBaseFinanceEbayItemDto.getId());
dcBaseFinanceEbayItem.setCurrency(dcBaseFinanceEbayItemDto.getCurrency());
dcBaseFinanceEbayItem.setExchangeRate(dcBaseFinanceEbayItemDto.getExchangeRate());
dcBaseFinanceEbayItem.setExchangeRateUsd(dcBaseFinanceEbayItemDto.getExchangeRateUsd());
dcBaseFinanceEbayItem.setSkuCount(1);
dcBaseFinanceEbayItem.setBailunSku(ebaySkuMapping.getSkuCode());
dcBaseFinanceEbayItem.setId(null);
if(ebaySkuMapping.getSkuCode() == null) {
dcBaseFinanceEbayItem.setBailunSku("无");
}
DcBaseFinanceEbayItemMapper dcBaseFinanceEbayItemMapper = SessionUtil.getSession().getMapper(DcBaseFinanceEbayItemMapper.class);
dcBaseFinanceEbayItemMapper.insertSelective(dcBaseFinanceEbayItem);
}
dcBaseFinanceEbayItem.setSkuRatio(unitPriceRadio);
dcBaseFinanceEbayItem.setSkuAmount(dcBaseFinanceEbayItemDto.getGrossAmount().multiply(unitPriceRadio));
}else {
DcBaseFinanceEbayItem dcBaseFinanceEbayItem = new DcBaseFinanceEbayItem();
dcBaseFinanceEbayItem.setSkuAmount(BigDecimal.ZERO);
dcBaseFinanceEbayItem.setAccountId(dcBaseFinanceEbayItemDto.getAccountId());
dcBaseFinanceEbayItem.setGrossAmount(dcBaseFinanceEbayItemDto.getGrossAmount());
dcBaseFinanceEbayItem.setAccountEntryType(dcBaseFinanceEbayItemDto.getAccountEntryType());
......@@ -120,16 +162,11 @@ public class CalculateEbayItemJob extends PointJob {
dcBaseFinanceEbayItem.setCurrency(dcBaseFinanceEbayItemDto.getCurrency());
dcBaseFinanceEbayItem.setExchangeRate(dcBaseFinanceEbayItemDto.getExchangeRate());
dcBaseFinanceEbayItem.setExchangeRateUsd(dcBaseFinanceEbayItemDto.getExchangeRateUsd());
dcBaseFinanceEbayItem.setSkuCount(1);
dcBaseFinanceEbayItem.setBailunSku(ebaySkuMapping.getSkuCode());
dcBaseFinanceEbayItem.setId(null);
if(ebaySkuMapping.getSkuCode() == null) {
dcBaseFinanceEbayItem.setBailunSku("无");
}
DcBaseFinanceEbayItemMapper dcBaseFinanceEbayItemMapper = SessionUtil.getSession().getMapper(DcBaseFinanceEbayItemMapper.class);
dcBaseFinanceEbayItemMapper.insertSelective(dcBaseFinanceEbayItem);
}
}else {
} else {
DcBaseFinanceEbayItem dcBaseFinanceEbayItem = new DcBaseFinanceEbayItem();
dcBaseFinanceEbayItem.setSkuAmount(BigDecimal.ZERO);
dcBaseFinanceEbayItem.setAccountId(dcBaseFinanceEbayItemDto.getAccountId());
......@@ -142,12 +179,9 @@ public class CalculateEbayItemJob extends PointJob {
dcBaseFinanceEbayItem.setCurrency(dcBaseFinanceEbayItemDto.getCurrency());
dcBaseFinanceEbayItem.setExchangeRate(dcBaseFinanceEbayItemDto.getExchangeRate());
dcBaseFinanceEbayItem.setExchangeRateUsd(dcBaseFinanceEbayItemDto.getExchangeRateUsd());
dcBaseFinanceEbayItem.setId(null);
DcBaseFinanceEbayItemMapper dcBaseFinanceEbayItemMapper = SessionUtil.getSession().getMapper(DcBaseFinanceEbayItemMapper.class);
dcBaseFinanceEbayItemMapper.insertSelective(dcBaseFinanceEbayItem);
}
} else {
throw new RuntimeException("调用ebay广告费映射失败, 响应200, 请求参数" + dcBaseFinanceEbayItemDto.getItemId());
}
}
}
......@@ -173,6 +207,15 @@ public class CalculateEbayItemJob extends PointJob {
return countEbayFee / jobPointLog.getPageSize() + 1;
}
BigDecimal getTotalUnitPrice0(List<DcBaseEbaySkuMappingDto> dcBaseSkuMappingList) {
BigDecimal totalUnitPrice = BigDecimal.ZERO;
for(DcBaseEbaySkuMappingDto dcBaseEbaySkuMappingDto : dcBaseSkuMappingList){
BigDecimal unitPrice = dcBaseEbaySkuMappingDto.getUnitPrice() == null ? BigDecimal.ZERO : dcBaseEbaySkuMappingDto.getUnitPrice();
totalUnitPrice = totalUnitPrice.add(unitPrice);
}
return totalUnitPrice;
}
BigDecimal getTotalUnitPrice(List<DcBaseEbaySkuMapping> dcBaseEbaySkuMappingList) {
BigDecimal totalUnitPrice = BigDecimal.ZERO;
DcBaseFinanceEbayMapper dcBaseFinanceEbayMapper = SessionUtil.getSession().getMapper(DcBaseFinanceEbayMapper.class);
......
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