优化导入逻辑

This commit is contained in:
wuweihua
2026-09-29 10:32:59 +08:00
parent 590a65475b
commit ff57be1116
3 changed files with 22 additions and 6 deletions
@@ -71,7 +71,7 @@ public interface PrcPriceSetDetailMapper
@Param("psvId") Long psvId,
@Param("productCode") String productCode);
/** Update package freight / registration only */
/** Update package freight / registration; null args keep existing columns. */
public int updateDetailPrices(
@Param("psdId") Long psdId,
@Param("fvValue") BigDecimal fvValue,
@@ -917,9 +917,22 @@ public class PrcPriceSetServiceImpl implements IPrcPriceSetService
{
continue;
}
detailMapper.updateDetailPrices(hit.getPsdId(), row.getFreightPrice(), row.getRegistrationFee());
hit.setFvValue(row.getFreightPrice());
hit.setFvRegistrationFee(row.getRegistrationFee());
// Empty import freight/registration: do not overwrite existing detail values.
BigDecimal freight = row.getFreightPrice();
BigDecimal registration = row.getRegistrationFee();
if (freight == null && registration == null)
{
continue;
}
detailMapper.updateDetailPrices(hit.getPsdId(), freight, registration);
if (freight != null)
{
hit.setFvValue(freight);
}
if (registration != null)
{
hit.setFvRegistrationFee(registration);
}
touched.add(hit.getPsdId());
updated++;
}
@@ -258,11 +258,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
)
</insert>
<!-- Null means keep existing value (import empty freight/registration skips overwrite). -->
<update id="updateDetailPrices">
update prc_price_set_detail
set fv_value = #{fvValue},
fv_registration_fee = #{fvRegistrationFee},
<set>
<if test="fvValue != null">fv_value = #{fvValue},</if>
<if test="fvRegistrationFee != null">fv_registration_fee = #{fvRegistrationFee},</if>
update_time = sysdate()
</set>
where psd_id = #{psdId}
</update>