</parent> | </parent> | ||||
<modelVersion>4.0.0</modelVersion> | <modelVersion>4.0.0</modelVersion> | ||||
<packaging>jar</packaging> | <packaging>jar</packaging> | ||||
<artifactId>ruoyi-admin</artifactId> | |||||
<artifactId>zs-admin</artifactId> | |||||
<description> | <description> | ||||
web服务入口 | web服务入口 |
package com.ruoyi.system.controller; | |||||
import cn.dev33.satoken.annotation.SaCheckPermission; | |||||
import cn.dev33.satoken.annotation.SaIgnore; | |||||
import com.ruoyi.common.core.controller.BaseController; | |||||
import com.ruoyi.common.core.domain.PageQuery; | |||||
import com.ruoyi.common.core.page.TableDataInfo; | |||||
import com.ruoyi.system.domain.bo.ZsOperationGoodsDetailBo; | |||||
import com.ruoyi.system.domain.vo.ZsOperationGoodsDetailVo; | |||||
import com.ruoyi.system.service.IZsOperationGoodsDetailService; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.validation.annotation.Validated; | |||||
import org.springframework.web.bind.annotation.*; | |||||
/** | |||||
* 商品配置 | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-08 | |||||
*/ | |||||
@Validated | |||||
@RequiredArgsConstructor | |||||
@RestController | |||||
@RequestMapping("/system/operationGoodsDetail") | |||||
public class ZsOperationGoodsDetailController extends BaseController { | |||||
@Autowired | |||||
private IZsOperationGoodsDetailService iZsOperationGoodsDetailService; | |||||
/** | |||||
* 查询商品配置列表 | |||||
*/ | |||||
// @SaCheckPermission("system:operationGoodsDetail:list") | |||||
@SaIgnore | |||||
@GetMapping("/list") | |||||
public TableDataInfo<ZsOperationGoodsDetailVo> list(ZsOperationGoodsDetailBo bo, PageQuery pageQuery) { | |||||
return iZsOperationGoodsDetailService.queryPageList(bo,pageQuery); | |||||
} | |||||
} |
package com.ruoyi.system.domain; | |||||
import com.baomidou.mybatisplus.annotation.TableId; | |||||
import com.baomidou.mybatisplus.annotation.TableName; | |||||
import lombok.Data; | |||||
import java.math.BigDecimal; | |||||
import java.util.Date; | |||||
/** | |||||
* 接收商品信息对象 zs_operation_goods_detail | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-08 | |||||
*/ | |||||
@Data | |||||
@TableName("zs_operation_goods_detail") | |||||
public class ZsOperationGoodsDetail { | |||||
private static final long serialVersionUID=1L; | |||||
/** | |||||
* 主键ID | |||||
*/ | |||||
@TableId(value = "id") | |||||
private Long id; | |||||
/** | |||||
* 商品名字 | |||||
*/ | |||||
private String goodsSkuName; | |||||
/** | |||||
* 商品编号 | |||||
*/ | |||||
private String goodsSkuSn; | |||||
/** | |||||
* 商品url | |||||
*/ | |||||
private String goodsSkuUrl; | |||||
/** | |||||
* 当前价格 | |||||
*/ | |||||
private BigDecimal curPrice; | |||||
/** | |||||
* 备注 | |||||
*/ | |||||
private String remark; | |||||
/** | |||||
* 接收时间 | |||||
*/ | |||||
private Date receiveDate; | |||||
} |
package com.ruoyi.system.domain.bo; | |||||
import com.ruoyi.common.core.domain.BaseEntity; | |||||
import com.ruoyi.common.core.validate.EditGroup; | |||||
import lombok.Data; | |||||
import lombok.EqualsAndHashCode; | |||||
import javax.validation.constraints.NotNull; | |||||
import java.math.BigDecimal; | |||||
import java.util.Date; | |||||
/** | |||||
* 接收商品信息对象 zs_operation_goods_detail | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-08 | |||||
*/ | |||||
@Data | |||||
@EqualsAndHashCode(callSuper = true) | |||||
public class ZsOperationGoodsDetailBo extends BaseEntity { | |||||
/** | |||||
* 主键ID | |||||
*/ | |||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) | |||||
private Long id; | |||||
/** | |||||
* 商品名字 | |||||
*/ | |||||
private String goodsSkuName; | |||||
/** | |||||
* 商品编号 | |||||
*/ | |||||
private String goodsSkuSn; | |||||
/** | |||||
* 商品url | |||||
*/ | |||||
private String goodsSkuUrl; | |||||
/** | |||||
* 当前价格 | |||||
*/ | |||||
private String curPrice; | |||||
/** | |||||
* 备注 | |||||
*/ | |||||
private String remark; | |||||
/** | |||||
* 接收时间 | |||||
*/ | |||||
private Date receiveDate; | |||||
} |
package com.ruoyi.system.domain.vo; | |||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | |||||
import com.alibaba.excel.annotation.ExcelProperty; | |||||
import com.ruoyi.common.annotation.ExcelDictFormat; | |||||
import com.ruoyi.common.convert.ExcelDictConvert; | |||||
import lombok.Data; | |||||
import java.math.BigDecimal; | |||||
import java.util.Date; | |||||
/** | |||||
* 接收商品信息视图对象 zs_operation_goods_detail | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-08 | |||||
*/ | |||||
@Data | |||||
@ExcelIgnoreUnannotated | |||||
public class ZsOperationGoodsDetailVo { | |||||
private static final long serialVersionUID = 1L; | |||||
/** | |||||
* 主键ID | |||||
*/ | |||||
@ExcelProperty(value = "主键ID") | |||||
private Long id; | |||||
/** | |||||
* 商品名字 | |||||
*/ | |||||
@ExcelProperty(value = "商品名字") | |||||
private String goodsSkuName; | |||||
/** | |||||
* 商品编号 | |||||
*/ | |||||
@ExcelProperty(value = "商品编号") | |||||
private String goodsSkuSn; | |||||
/** | |||||
* 商品url | |||||
*/ | |||||
@ExcelProperty(value = "商品url") | |||||
private String goodsSkuUrl; | |||||
/** | |||||
* 基准价格 | |||||
*/ | |||||
@ExcelProperty(value = "基准价格") | |||||
private BigDecimal curPrice; | |||||
/** | |||||
* 备注 | |||||
*/ | |||||
@ExcelProperty(value = "备注") | |||||
private String remark; | |||||
/** | |||||
* 创建时间 | |||||
*/ | |||||
@ExcelProperty(value = "创建时间") | |||||
private Date receiveDate; | |||||
} |
package com.ruoyi.system.mapper; | |||||
import com.ruoyi.common.core.mapper.BaseMapperPlus; | |||||
import com.ruoyi.system.domain.ZsOperationGoods; | |||||
import com.ruoyi.system.domain.ZsOperationGoodsDetail; | |||||
import com.ruoyi.system.domain.vo.ZsOperationGoodsDetailVo; | |||||
import com.ruoyi.system.domain.vo.ZsOperationGoodsVo; | |||||
/** | |||||
* 接收商品信息配置Mapper接口 | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-08 | |||||
*/ | |||||
public interface ZsOperationGoodsDetailMapper extends BaseMapperPlus<ZsOperationGoodsDetailMapper, ZsOperationGoodsDetail, ZsOperationGoodsDetailVo> { | |||||
} |
package com.ruoyi.system.service; | |||||
import com.ruoyi.common.core.domain.PageQuery; | |||||
import com.ruoyi.common.core.page.TableDataInfo; | |||||
import com.ruoyi.system.domain.bo.ZsOperationGoodsDetailBo; | |||||
import com.ruoyi.system.domain.vo.ZsOperationGoodsDetailVo; | |||||
/** | |||||
* 商品配置Service接口 | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-08 | |||||
*/ | |||||
public interface IZsOperationGoodsDetailService { | |||||
/** | |||||
* 查询商品配置列表 | |||||
*/ | |||||
TableDataInfo<ZsOperationGoodsDetailVo> queryPageList(ZsOperationGoodsDetailBo bo, PageQuery pageQuery); | |||||
/** | |||||
* 新增商品配置 | |||||
*/ | |||||
Boolean insertByBo(ZsOperationGoodsDetailBo bo); | |||||
} |
package com.ruoyi.system.service.impl; | |||||
import cn.hutool.core.bean.BeanUtil; | |||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||||
import com.ruoyi.common.core.domain.PageQuery; | |||||
import com.ruoyi.common.core.page.TableDataInfo; | |||||
import com.ruoyi.system.domain.ZsOperationGoodsDetail; | |||||
import com.ruoyi.system.domain.bo.ZsOperationGoodsDetailBo; | |||||
import com.ruoyi.system.domain.vo.ZsOperationGoodsDetailVo; | |||||
import com.ruoyi.system.mapper.ZsOperationGoodsDetailMapper; | |||||
import com.ruoyi.system.service.IZsOperationGoodsDetailService; | |||||
import lombok.RequiredArgsConstructor; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.stereotype.Service; | |||||
/** | |||||
* 商品配置Service业务层处理 | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-08 | |||||
*/ | |||||
@RequiredArgsConstructor | |||||
@Service | |||||
@Slf4j | |||||
public class ZsOperationGoodsDetailServiceImpl implements IZsOperationGoodsDetailService { | |||||
@Autowired | |||||
private ZsOperationGoodsDetailMapper baseMapper; | |||||
private LambdaQueryWrapper<ZsOperationGoodsDetail> buildQueryWrapper(ZsOperationGoodsDetailBo bo) { | |||||
// Map<String, Object> params = bo.getParams(); | |||||
LambdaQueryWrapper<ZsOperationGoodsDetail> lqw = Wrappers.lambdaQuery(); | |||||
//lqw.eq(StringUtils.isNotBlank(bo.getModule()), ZsOperationSendconfig::getModule, bo.getModule()); | |||||
return lqw; | |||||
} | |||||
@Override | |||||
public TableDataInfo<ZsOperationGoodsDetailVo> queryPageList(ZsOperationGoodsDetailBo bo, PageQuery pageQuery) { | |||||
LambdaQueryWrapper<ZsOperationGoodsDetail> lqw = buildQueryWrapper(bo); | |||||
Page<ZsOperationGoodsDetailVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); | |||||
return TableDataInfo.build(result); | |||||
} | |||||
@Override | |||||
public Boolean insertByBo(ZsOperationGoodsDetailBo bo) { | |||||
ZsOperationGoodsDetail add = BeanUtil.toBean(bo, ZsOperationGoodsDetail.class); | |||||
validEntityBeforeSave(add); | |||||
boolean flag = baseMapper.insert(add) > 0; | |||||
if (flag) { | |||||
bo.setId(add.getId()); | |||||
} | |||||
return flag; | |||||
} | |||||
/** | |||||
* 保存前的数据校验 | |||||
*/ | |||||
private void validEntityBeforeSave(ZsOperationGoodsDetail entity){ | |||||
//TODO 做一些数据校验,如唯一约束 | |||||
} | |||||
} |
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.ruoyi.system.domain.*; | import com.ruoyi.system.domain.*; | ||||
import com.ruoyi.system.domain.bo.ZsOperationGoodsDetailBo; | |||||
import com.ruoyi.system.mapper.ZsOperationGoodsMapper; | import com.ruoyi.system.mapper.ZsOperationGoodsMapper; | ||||
import com.ruoyi.system.mapper.ZsOperationSendconfigMapper; | import com.ruoyi.system.mapper.ZsOperationSendconfigMapper; | ||||
import com.ruoyi.system.mapper.ZsOperationWarnconfigMapper; | import com.ruoyi.system.mapper.ZsOperationWarnconfigMapper; | ||||
import com.ruoyi.system.service.ISysDictDataService; | import com.ruoyi.system.service.ISysDictDataService; | ||||
import com.ruoyi.system.service.IZsOperationGoodsDetailService; | |||||
import com.ruoyi.system.utils.DateUtil; | import com.ruoyi.system.utils.DateUtil; | ||||
import com.ruoyi.system.utils.EmailUtils; | import com.ruoyi.system.utils.EmailUtils; | ||||
import lombok.Data; | import lombok.Data; | ||||
private SpringTemplateEngine templateEngine; | private SpringTemplateEngine templateEngine; | ||||
@Autowired | @Autowired | ||||
private EmailUtils emailUtils; | private EmailUtils emailUtils; | ||||
@Autowired | |||||
private IZsOperationGoodsDetailService iZsOperationGoodsDetailService; | |||||
/** | /** | ||||
* 查询预警结果 | * 查询预警结果 | ||||
*/ | */ | ||||
updateWrapper.set("goods_sku_sn",newSn); | updateWrapper.set("goods_sku_sn",newSn); | ||||
int i = zsOperationWarnresultMapper.update(null,updateWrapper); | int i = zsOperationWarnresultMapper.update(null,updateWrapper); | ||||
//插入 | |||||
ZsOperationGoodsDetailBo zsOperationGoodsDetailBo = new ZsOperationGoodsDetailBo(); | |||||
zsOperationGoodsDetailBo.setGoodsSkuName(newName); | |||||
zsOperationGoodsDetailBo.setGoodsSkuSn(newSn); | |||||
zsOperationGoodsDetailBo.setGoodsSkuUrl(curUrl); | |||||
zsOperationGoodsDetailBo.setRemark((String)dataMap.get("remark")); | |||||
zsOperationGoodsDetailBo.setCurPrice((String)dataMap.get("price")); | |||||
zsOperationGoodsDetailBo.setReceiveDate(new Date(DateUtil.getShanghaiTimestamp())); | |||||
iZsOperationGoodsDetailService.insertByBo(zsOperationGoodsDetailBo); | |||||
//3.查询商品基准价格 | //3.查询商品基准价格 | ||||
QueryWrapper<ZsOperationGoods> goodsQueryWrapper = new QueryWrapper(); | QueryWrapper<ZsOperationGoods> goodsQueryWrapper = new QueryWrapper(); | ||||
goodsQueryWrapper.eq("goods_sku_url",curUrl); | goodsQueryWrapper.eq("goods_sku_url",curUrl); |