feat(buildpackage): 新增交易时间字段并优化销售订单推送逻辑- 在 OfsPassiveorderDetailEntity 中添加 transactionDate 字段,用于记录交易时间

- 更新OfsPassiveorderDetailEntity.xml,增加 transactionDate 字段的数据库映射
- 修改 SoSaleReturnPluginInitializerToC 中的 filterForSale 方法,增加对 returnNode 的空值检查
- 在 ArapDjzbVO 中添加 def1、def2、def3 和 def16 字段,用于扩展自定义项
- 更新 QueryAdditionUtil,增加 additionalV2 方法,用于处理 TOC 业务的销售订单推送
- 在 PassiveStorageResponse 中添加 refundedAt 字段,用于记录退款完成时间
This commit is contained in:
liuy 2025-03-13 16:39:26 +08:00
parent ed4d8f3e94
commit 3c5c54a5f7
8 changed files with 2645 additions and 2603 deletions

View File

@ -53,6 +53,10 @@ public class OfsPassiveorderDetailEntity extends BaseEntity {
* 业务日期 * 业务日期
*/ */
private String businessdate; private String businessdate;
/**
* 交易时间
*/
private String transactionDate;
/** /**
* 业务类型 * 业务类型
*/ */
@ -387,5 +391,12 @@ public class OfsPassiveorderDetailEntity extends BaseEntity {
this.newsystemprimary2 = newsystemprimary2; this.newsystemprimary2 = newsystemprimary2;
} }
public String getTransactionDate() {
return transactionDate;
}
public void setTransactionDate(String transactionDate) {
this.transactionDate = transactionDate;
}
} }

View File

@ -287,10 +287,10 @@
<!-- 批量更新入库或者退款完成的状态--> <!-- 批量更新入库或者退款完成的状态-->
<insert id="entityInsertOrUpdateBatchV2" keyProperty="id" useGeneratedKeys="true"> <insert id="entityInsertOrUpdateBatchV2" keyProperty="id" useGeneratedKeys="true">
insert into ofs_passiveorder_detail(id,newPushDate, newTransmitInfo, newState, newsystemnumber, newsystemprimary,def1,def2,def3,def4,def5,def6,def7,def8,def9,def10) insert into ofs_passiveorder_detail(id,newPushDate, newTransmitInfo, newState, newsystemnumber, newsystemprimary,transactionDate,def1,def2,def3,def4,def5,def6,def7,def8,def9,def10)
values values
<foreach collection="list" item="entity" separator=","> <foreach collection="list" item="entity" separator=",">
(#{entity.id},#{entity.newpushdate},#{entity.newtransmitinfo},#{entity.newstate},#{entity.newsystemnumber},#{entity.newsystemprimary},#{entity.def1},#{entity.def1},#{entity.def2},#{entity.def3},#{entity.def4},#{entity.def5},#{entity.def6},#{entity.def7},#{entity.def8},#{entity.def9},#{entity.def10}) (#{entity.id},#{entity.newpushdate},#{entity.newtransmitinfo},#{entity.newstate},#{entity.newsystemnumber},#{entity.newsystemprimary},#{entity.transactionDate},#{entity.def1},#{entity.def2},#{entity.def3},#{entity.def4},#{entity.def5},#{entity.def6},#{entity.def7},#{entity.def8},#{entity.def9},#{entity.def10})
</foreach> </foreach>
on duplicate key update on duplicate key update
id = values(id), id = values(id),
@ -299,6 +299,7 @@
newState = values(newState), newState = values(newState),
newsystemnumber = values(newsystemnumber), newsystemnumber = values(newsystemnumber),
newsystemprimary = values(newsystemprimary), newsystemprimary = values(newsystemprimary),
transactionDate = values(transactionDate),
def1 = values(def1), def1 = values(def1),
def2 = values(def2), def2 = values(def2),
def3 = values(def3), def3 = values(def3),
@ -313,10 +314,10 @@
<!-- 批量更新入库或者退款完成的状态--> <!-- 批量更新入库或者退款完成的状态-->
<insert id="entityInsertOrUpdateBatchV3" keyProperty="id" useGeneratedKeys="true"> <insert id="entityInsertOrUpdateBatchV3" keyProperty="id" useGeneratedKeys="true">
insert into ofs_passiveorder_detail(id,newPushDate2, newTransmitInfo2, newState2, newsystemnumber2, newsystemprimary2,def1,def2,def3,def4,def5,def6,def7,def8,def9,def10) insert into ofs_passiveorder_detail(id,newPushDate2, newTransmitInfo2, newState2, newsystemnumber2, newsystemprimary2,transactionDate,def1,def2,def3,def4,def5,def6,def7,def8,def9,def10)
values values
<foreach collection="list" item="entity" separator=","> <foreach collection="list" item="entity" separator=",">
(#{entity.id},#{entity.newpushdate2},#{entity.newtransmitinfo2},#{entity.newstate2},#{entity.newsystemnumber2},#{entity.newsystemprimary2},#{entity.def1},#{entity.def1},#{entity.def2},#{entity.def3},#{entity.def4},#{entity.def5},#{entity.def6},#{entity.def7},#{entity.def8},#{entity.def9},#{entity.def10}) (#{entity.id},#{entity.newpushdate2},#{entity.newtransmitinfo2},#{entity.newstate2},#{entity.newsystemnumber2},#{entity.newsystemprimary2},#{entity.transactionDate},#{entity.def1},#{entity.def2},#{entity.def3},#{entity.def4},#{entity.def5},#{entity.def6},#{entity.def7},#{entity.def8},#{entity.def9},#{entity.def10})
</foreach> </foreach>
on duplicate key update on duplicate key update
id = values(id), id = values(id),
@ -325,6 +326,7 @@
newState2 = values(newState2), newState2 = values(newState2),
newsystemnumber2 = values(newsystemnumber2), newsystemnumber2 = values(newsystemnumber2),
newsystemprimary2 = values(newsystemprimary2), newsystemprimary2 = values(newsystemprimary2),
transactionDate = values(transactionDate),
def1 = values(def1), def1 = values(def1),
def2 = values(def2), def2 = values(def2),
def3 = values(def3), def3 = values(def3),

View File

@ -3236,9 +3236,10 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
/** /**
* 如果售后入库单对应的售后订单状态为售中节点则过滤掉不传递 * 如果售后入库单对应的售后订单状态为售中节点则过滤掉不传递
* *
* @throws Exception 抛出可能的异常
* @author liuyang * @author liuyang
*/ */
public List<StockinOrderSearchResponse.StockinOrder> filterForSale(List<StockinOrderSearchResponse.StockinOrder> returnGoodHeaderDetailsDataDtoList1) { public List<StockinOrderSearchResponse.StockinOrder> filterForSale(List<StockinOrderSearchResponse.StockinOrder> returnGoodHeaderDetailsDataDtoList1) throws Exception {
List<StockinOrderSearchResponse.StockinOrder> filteredList = null; List<StockinOrderSearchResponse.StockinOrder> filteredList = null;
if (returnGoodHeaderDetailsDataDtoList1 != null && returnGoodHeaderDetailsDataDtoList1.size() > 0) { if (returnGoodHeaderDetailsDataDtoList1 != null && returnGoodHeaderDetailsDataDtoList1.size() > 0) {
filteredList = returnGoodHeaderDetailsDataDtoList1.stream().filter(stockinOrder -> { filteredList = returnGoodHeaderDetailsDataDtoList1.stream().filter(stockinOrder -> {
@ -3247,9 +3248,12 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
// 如果 StockinH 为空保留该对象 // 如果 StockinH 为空保留该对象
return true; return true;
} }
// 获取 RerturnGoodsOrderSearchData 对象
RerturnGoodsOrderSearchData returnData = header.getRerturnGoodsOrderSearchData(); RerturnGoodsOrderSearchData returnData = header.getRerturnGoodsOrderSearchData();
if (returnData == null) { if (returnData == null || returnData.getHeader() == null) {
// 如果 RerturnGoodsOrderSearchData 为空保留该对象
return true;
}
if (returnData.getHeader().getReturnNode() == null) {
// 如果 RerturnGoodsOrderSearchData 为空保留该对象 // 如果 RerturnGoodsOrderSearchData 为空保留该对象
return true; return true;
} }

View File

@ -79,6 +79,11 @@ public class ArapDjzbVO {
private String zyx7;//自定义项7档案类型的传pk private String zyx7;//自定义项7档案类型的传pk
private String zyx8;//自定义项8档案类型的传pk private String zyx8;//自定义项8档案类型的传pk
private String zyx9;//自定义项9档案类型的传pk private String zyx9;//自定义项9档案类型的传pk
private String def1;
private String def2;
private String def3;
private String def16;
} }
@Data @Data

View File

@ -40,4 +40,6 @@ public class ErrorHeaderDetailsDtoDtoV3 extends PassiveStorageResponse.Data {
private String newsystemnumber; private String newsystemnumber;
//下游主键 //下游主键
private String newsystemprimary; private String newsystemprimary;
//交易成功时间
// private String transactionDate;
} }

View File

@ -9,7 +9,11 @@ import com.hzya.frame.plugin.lets.dao.IBdTaxitemsDao;
import com.hzya.frame.plugin.lets.entity.BdInvbasdocEntity; import com.hzya.frame.plugin.lets.entity.BdInvbasdocEntity;
import com.hzya.frame.plugin.lets.entity.BdInvmandocEntity; import com.hzya.frame.plugin.lets.entity.BdInvmandocEntity;
import com.hzya.frame.plugin.lets.entity.BdTaxitemsEntity; import com.hzya.frame.plugin.lets.entity.BdTaxitemsEntity;
import com.hzya.frame.plugin.lets.plugin.sales.PassiveWarehouseReceiptToC;
import com.hzya.frame.plugin.lets.u8cdto.ArapDjzbVO;
import com.hzya.frame.plugin.lets.u8cdto.SaleorderRequestChildrenDto; import com.hzya.frame.plugin.lets.u8cdto.SaleorderRequestChildrenDto;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -30,6 +34,8 @@ import java.util.stream.Collectors;
@Component @Component
public class QueryAdditionUtil { public class QueryAdditionUtil {
Logger logger = LoggerFactory.getLogger(QueryAdditionUtil.class);
@Autowired @Autowired
private IBdInvbasdocDao iBdInvbasdocDao; private IBdInvbasdocDao iBdInvbasdocDao;
@ -110,7 +116,7 @@ public class QueryAdditionUtil {
} }
/** /**
* 增加平台运费优惠金额这些存货一起保存进U8C销售订单 * 增加平台运费优惠金额这些存货一起保存进U8C销售订单,TOC业务
* *
* @param bdInvmandocEntity1 存货管理档案 * @param bdInvmandocEntity1 存货管理档案
* @param bdInvbasdocEntity1 存货基本档案 * @param bdInvbasdocEntity1 存货基本档案
@ -149,7 +155,7 @@ public class QueryAdditionUtil {
//税率 //税率
saleorderRequestChildrenDto1.setNtaxrate(new BigDecimal(bdTaxitemsEntity.getTaxratio()).stripTrailingZeros().toPlainString()); saleorderRequestChildrenDto1.setNtaxrate(new BigDecimal(bdTaxitemsEntity.getTaxratio()).stripTrailingZeros().toPlainString());
//优惠字段 //优惠字段
saleorderRequestChildrenDto1.setVdef4("0"); saleorderRequestChildrenDto1.setVdef4("0");
saleorderRequestChildrenDto1.setVdef5("0"); saleorderRequestChildrenDto1.setVdef5("0");
@ -166,4 +172,60 @@ public class QueryAdditionUtil {
} }
} }
} }
/**
* 增加平台运费优惠金额这些存货一起保存进U8C销售订单
*
* @param bdInvmandocEntity1 存货管理档案
* @param bdInvbasdocEntity1 存货基本档案
* @param pushScenarioType 需要推送给U8C红字应收单明细行表体
* @param noriginalcursummny 价税合计(只能传金额)
* @param bdTaxitemsEntity 存货对应的税率
* @author liuyang
*/
public void additionalV2(List<ArapDjzbVO.Childrenn> pushScenarioType, BdInvmandocEntity bdInvmandocEntity1, BdInvbasdocEntity bdInvbasdocEntity1, BigDecimal noriginalcursummny, BdTaxitemsEntity bdTaxitemsEntity) {
Assert.notNull(pushScenarioType, "pushScenarioType不能为空");
Assert.notNull(bdInvmandocEntity1, "bdInvmandocEntity1不能为空");
Assert.notNull(bdInvbasdocEntity1, "bdInvbasdocEntity1不能为空");
Assert.notNull(noriginalcursummny, "noriginalcursummny不能为空");
//如果size=0则不正常
if (pushScenarioType.size() > 0) {
ArapDjzbVO.Childrenn childrenn = pushScenarioType.get(0);
//拷贝SaleorderRequestChildrenDto对象
ArapDjzbVO.Childrenn arapDjzbVOChildrenn = new ArapDjzbVO.Childrenn();
BeanUtil.copyPropertiesV2(childrenn, arapDjzbVOChildrenn);
//修改存货数量税率价税合计优惠金额设置为0
//存货id存货编码
arapDjzbVOChildrenn.setCinventoryid(bdInvmandocEntity1.getPkInvmandoc());
String tax = null;//税率
BigDecimal noriginalcurmny = null;//无税金额
BigDecimal noriginalcurtaxmny = null;//税额
try {
tax = new BigDecimal(bdTaxitemsEntity.getTaxratio()).divide(new BigDecimal(100), 20, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString();
noriginalcurmny = noriginalcursummny.divide(new BigDecimal(1).add(new BigDecimal(tax)), 20, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
noriginalcurtaxmny = noriginalcursummny.subtract(noriginalcurmny).setScale(2, BigDecimal.ROUND_HALF_UP);
} catch (Exception e) {
logger.error("金额计算失败", e);
Assert.state(false, "金额计算失败 异常:{}", e.getMessage());
}
//金额计算
arapDjzbVOChildrenn.setJfbbje("-" + noriginalcursummny.stripTrailingZeros().toPlainString());//借方本币金额
arapDjzbVOChildrenn.setJfybje("-" + noriginalcursummny.stripTrailingZeros().toPlainString());//借方原币金额
arapDjzbVOChildrenn.setJfbbsj("-" + noriginalcurmny.stripTrailingZeros().toPlainString());//借方本币税金
arapDjzbVOChildrenn.setJfybsj("-" + noriginalcurmny.stripTrailingZeros().toPlainString());//借方原币税金
arapDjzbVOChildrenn.setWbfbbje("-" + noriginalcurtaxmny.stripTrailingZeros().toPlainString());//借方本币无税金额
arapDjzbVOChildrenn.setJfybwsje("-" + noriginalcurtaxmny.stripTrailingZeros().toPlainString());//借方原币无税金额
//2025年2月17日 10:37:37 如果四舍五入保留2位后如果为0则不推送U8C处理0.0033保留2位为0的问题
//和李佳妮还有丽知-山海沟通确定的
if (!"0".equals(noriginalcursummny.setScale(2, BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString())) {
pushScenarioType.add(arapDjzbVOChildrenn);
}
}
}
} }

View File

@ -68,6 +68,9 @@ public class PassiveStorageResponse extends ReturnMessageBasics {
private String createdBy; private String createdBy;
private String lastUpdated; private String lastUpdated;
private String lastUpdatedBy; private String lastUpdatedBy;
//无源件表头
private PassiveStorageResponse.Header header; private PassiveStorageResponse.Header header;
//退款完成时间
private String refundedAt;
} }
} }