@@ -9,7 +9,7 @@ | |||
</parent> | |||
<modelVersion>4.0.0</modelVersion> | |||
<packaging>jar</packaging> | |||
<artifactId>ruoyi-admin</artifactId> | |||
<artifactId>zs-admin</artifactId> | |||
<description> | |||
web服务入口 |
@@ -0,0 +1,41 @@ | |||
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); | |||
} | |||
} |
@@ -0,0 +1,54 @@ | |||
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; | |||
} |
@@ -0,0 +1,61 @@ | |||
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; | |||
} |
@@ -0,0 +1,67 @@ | |||
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; | |||
} |
@@ -0,0 +1,17 @@ | |||
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> { | |||
} |
@@ -0,0 +1,28 @@ | |||
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); | |||
} |
@@ -0,0 +1,65 @@ | |||
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 做一些数据校验,如唯一约束 | |||
} | |||
} |
@@ -10,10 +10,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||
import com.ruoyi.system.domain.*; | |||
import com.ruoyi.system.domain.bo.ZsOperationGoodsDetailBo; | |||
import com.ruoyi.system.mapper.ZsOperationGoodsMapper; | |||
import com.ruoyi.system.mapper.ZsOperationSendconfigMapper; | |||
import com.ruoyi.system.mapper.ZsOperationWarnconfigMapper; | |||
import com.ruoyi.system.service.ISysDictDataService; | |||
import com.ruoyi.system.service.IZsOperationGoodsDetailService; | |||
import com.ruoyi.system.utils.DateUtil; | |||
import com.ruoyi.system.utils.EmailUtils; | |||
import lombok.Data; | |||
@@ -64,6 +66,8 @@ public class ZsOperationWarnresultServiceImpl implements IZsOperationWarnresultS | |||
private SpringTemplateEngine templateEngine; | |||
@Autowired | |||
private EmailUtils emailUtils; | |||
@Autowired | |||
private IZsOperationGoodsDetailService iZsOperationGoodsDetailService; | |||
/** | |||
* 查询预警结果 | |||
*/ | |||
@@ -209,6 +213,16 @@ public class ZsOperationWarnresultServiceImpl implements IZsOperationWarnresultS | |||
updateWrapper.set("goods_sku_sn",newSn); | |||
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.查询商品基准价格 | |||
QueryWrapper<ZsOperationGoods> goodsQueryWrapper = new QueryWrapper(); | |||
goodsQueryWrapper.eq("goods_sku_url",curUrl); |