package com.dkd.manage.domain.dto;
import lombok.Data;
import java.util.List;
@Data
public class ChannelConfigDto {
private String innerCode;//售货机编号
private List<ChannelSkuDto> channelList;//货道Dto集合
}
package com.dkd.manage.domain.dto;
import lombok.Data;
@Data
public class ChannelSkuDto {
private String innerCode;//售货机编号
private String channelCode;//货道编号
private Long skuId;//商品id
}
controller层
/**
* 货道关联商品
*/
@PreAuthorize("@ss.hasPermi('manage:channel:edit')")
@Log(title = "售货机货道", businessType = BusinessType.UPDATE)
@PutMapping("/config")
public AjaxResult setChannel(@RequestBody ChannelConfigDto channelConfigDto){
return toAjax(channelService.setChannel(channelConfigDto));
}
/**
* 货道关联商品
* @param channelConfigDto
* @return 结果
*/
serviceimpl
@Override
public int setChannel(ChannelConfigDto channelConfigDto) {
//1、将dto转为po对象
List<Channel> channelList = channelConfigDto.getChannelList().stream()
.map(dto -> {
//根据售货机编号和货道编号查询货道信息
Channel channel = channelMapper.getChannelInfo(dto.getInnerCode(), dto.getChannelCode());
if (channel != null) {
//关联最新商品id
channel.setSkuId(dto.getSkuId());
//货道修改时间
channel.setUpdateTime(DateUtils.getNowDate());
}
return channel;
})
.collect(Collectors.toList()); // 注意这里的collect是正确的拼写
//2、批量修改货道
return channelMapper.batchUpdateChannels(channelList);
}
service层
/**
* 货道关联商品
* @param channelConfigDto
* @return 结果
*/
int setChannel(ChannelConfigDto channelConfigDto);
napper层
/**
* 根据售货机编号和货道编号查询货道编号查询货道信息
* @param innenCodde
* @param channelCode
* @return 售货机货道信息
*/
@Select("select * from tb_channel where inner_code=#{innerCode} and channel_code=#{channelCode}")
Channel getChannelInfo(@Param("innerCode") String innerCode,@Param("channelCode") String channelCode);
/**
* 批量修改货道信息
* @param channelList
* @return
*/
int batchUpdateChannels(List<Channel>channelList);
xml
<update id="batchUpdateChannels" parameterType="java.util.List">
<foreach item="channel" index="index" collection="list" separator=";">
UPDATE tb_channel
<trim prefix="SET" suffixOverrides="," prefixOverrides=",">
<if test="channel.channelCode != null and channel.channelCode != ''">channel_code = #{channel.channelCode},</if>
<if test="channel.skuId != null">sku_id = #{channel.skuId},</if>
<if test="channel.vmId != null">vm_id = #{channel.vmId},</if>
<if test="channel.innerCode != null and channel.innerCode != ''">inner_code = #{channel.innerCode},</if>
<if test="channel.maxCapacity != null">max_capacity = #{channel.maxCapacity},</if>
<if test="channel.currentCapacity != null">current_capacity = #{channel.currentCapacity},</if>
<if test="channel.lastSupplyTime != null">last_supply_time = #{channel.lastSupplyTime},</if>
<if test="channel.createTime != null">create_time = #{channel.createTime},</if>
<if test="channel.updateTime != null">update_time = #{channel.updateTime}</if>
</trim>
WHERE id = #{channel.id}
</foreach>
</update>