工人热更新(js),初版详情页

This commit is contained in:
朱昊天
2026-04-27 10:40:56 +08:00
parent 1fe6e030d4
commit 1ce1ffad5a
27 changed files with 1067 additions and 28 deletions

View File

@@ -0,0 +1,72 @@
package com.gear.mat.controller;
import com.gear.common.core.domain.R;
import com.gear.common.core.page.TableDataInfo;
import com.gear.common.enums.BusinessType;
import com.gear.common.annotation.Log;
import com.gear.common.core.controller.BaseController;
import com.gear.mat.domain.bo.MatProductAdditionBo;
import com.gear.mat.domain.vo.MatProductAdditionVo;
import com.gear.mat.service.IMatProductAdditionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 产品属性附加表Controller
*
* @author gear
* @date 2026-04-22
*/
@RestController
@RequestMapping("/api/mat/productAddition")
public class MatProductAdditionController extends BaseController {
@Autowired
private IMatProductAdditionService productAdditionService;
/**
* 查询产品属性附加表列表
*
* @param productAdditionBo 产品属性附加表业务对象
* @return 产品属性附加表列表
*/
@GetMapping("/list")
public TableDataInfo list(MatProductAdditionBo productAdditionBo) {
List<MatProductAdditionVo> list = productAdditionService.listProductAddition(productAdditionBo);
return TableDataInfo.build(list);
}
/**
* 新增产品属性附加表
*/
@Log(title = "产品属性附加表", businessType = BusinessType.INSERT)
@PostMapping
public R<Boolean> add(@RequestBody MatProductAdditionBo productAdditionBo) {
boolean result = productAdditionService.addProductAddition(productAdditionBo);
return R.ok(result);
}
/**
* 修改产品属性附加表
*/
@Log(title = "产品属性附加表", businessType = BusinessType.UPDATE)
@PutMapping
public R<Boolean> update(@RequestBody MatProductAdditionBo productAdditionBo) {
boolean result = productAdditionService.updateProductAddition(productAdditionBo);
return R.ok(result);
}
/**
* 删除产品属性附加表
*
* @param addId 主键ID
* @return 删除结果
*/
@Log(title = "产品属性附加表", businessType = BusinessType.DELETE)
@DeleteMapping("/{addId}")
public R<Boolean> del(@PathVariable Long addId) {
boolean result = productAdditionService.delProductAddition(addId);
return R.ok(result);
}
}

View File

@@ -0,0 +1,49 @@
package com.gear.mat.controller;
import com.gear.common.annotation.Log;
import com.gear.common.core.controller.BaseController;
import com.gear.common.core.domain.R;
import com.gear.common.core.page.TableDataInfo;
import com.gear.common.enums.BusinessType;
import com.gear.mat.domain.bo.MatProductLaborBo;
import com.gear.mat.domain.vo.MatProductLaborVo;
import com.gear.mat.service.IMatProductLaborService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api/mat/productLabor")
public class MatProductLaborController extends BaseController {
@Autowired
private IMatProductLaborService productLaborService;
@GetMapping("/list")
public TableDataInfo list(MatProductLaborBo productLaborBo) {
List<MatProductLaborVo> list = productLaborService.listProductLabor(productLaborBo);
return TableDataInfo.build(list);
}
@Log(title = "产品手动工价", businessType = BusinessType.INSERT)
@PostMapping
public R<Boolean> add(@RequestBody MatProductLaborBo productLaborBo) {
boolean result = productLaborService.addProductLabor(productLaborBo);
return R.ok(result);
}
@Log(title = "产品手动工价", businessType = BusinessType.UPDATE)
@PutMapping
public R<Boolean> update(@RequestBody MatProductLaborBo productLaborBo) {
boolean result = productLaborService.updateProductLabor(productLaborBo);
return R.ok(result);
}
@Log(title = "产品手动工价", businessType = BusinessType.DELETE)
@DeleteMapping("/{laborId}")
public R<Boolean> del(@PathVariable Long laborId) {
boolean result = productLaborService.delProductLabor(laborId);
return R.ok(result);
}
}

View File

@@ -59,4 +59,9 @@ public class MatProduct extends BaseEntity {
*/
private String productImages;
/**
* 产品说明书多个PDF以逗号分隔
*/
private String productPdfs;
}

View File

@@ -0,0 +1,35 @@
package com.gear.mat.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.gear.common.core.domain.BaseEntity;
import lombok.Data;
/**
* 产品属性附加表
*
* @author gear
* @date 2026-04-22
*/
@Data
@TableName("gear_product_addition")
public class MatProductAddition extends BaseEntity {
/** 主键ID */
@TableId(type = IdType.AUTO)
private Long addId;
/** 属性名 */
private String attrName;
/** 属性值 */
private String attrValue;
/** 产品ID */
private Long productId;
/** 备注 */
private String remark;
/** 删除标识 0-未删除 1-已删除 */
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,27 @@
package com.gear.mat.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.gear.common.core.domain.BaseEntity;
import lombok.Data;
import java.math.BigDecimal;
@Data
@TableName("gear_product_labor")
public class MatProductLabor extends BaseEntity {
@TableId(type = IdType.AUTO)
private Long laborId;
private Long productId;
private String laborName;
private BigDecimal laborPrice;
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,31 @@
package com.gear.mat.domain.bo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* 产品属性附加表业务对象
*
* @author gear
* @date 2026-04-22
*/
@Data
public class MatProductAdditionBo {
/** 主键ID */
private Long addId;
/** 属性名 */
private String attrName;
/** 属性值 */
private String attrValue;
/** 产品ID */
private Long productId;
/** 备注 */
private String remark;
}

View File

@@ -57,5 +57,9 @@ public class MatProductBo extends BaseEntity {
*/
private String productImages;
/**
* 产品说明书多个PDF以逗号分隔
*/
private String productPdfs;
}

View File

@@ -0,0 +1,19 @@
package com.gear.mat.domain.bo;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class MatProductLaborBo {
private Long laborId;
private Long productId;
private String laborName;
private BigDecimal laborPrice;
private String remark;
}

View File

@@ -0,0 +1,40 @@
package com.gear.mat.domain.vo;
import lombok.Data;
import java.util.Date;
/**
* 产品属性附加表视图对象
*
* @author gear
* @date 2026-04-22
*/
@Data
public class MatProductAdditionVo {
/** 主键ID */
private Long addId;
/** 属性名 */
private String attrName;
/** 属性值 */
private String attrValue;
/** 产品ID */
private Long productId;
/** 创建时间 */
private Date createTime;
/** 创建人 */
private String createBy;
/** 更新时间 */
private Date updateTime;
/** 更新人 */
private String updateBy;
/** 备注 */
private String remark;
}

View File

@@ -0,0 +1,28 @@
package com.gear.mat.domain.vo;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class MatProductLaborVo {
private Long laborId;
private Long productId;
private String laborName;
private BigDecimal laborPrice;
private Date createTime;
private String createBy;
private Date updateTime;
private String updateBy;
private String remark;
}

View File

@@ -64,5 +64,11 @@ public class MatProductVo {
@ExcelProperty(value = "产品图片")
private String productImages;
/**
* 产品说明书多个PDF以逗号分隔
*/
@ExcelProperty(value = "产品说明书")
private String productPdfs;
}

View File

@@ -63,6 +63,12 @@ public class MatProductWithMaterialsVo {
@ExcelProperty(value = "产品图片")
private String productImages;
/**
* 产品PDF文件多个PDF以逗号分隔
*/
@ExcelProperty(value = "产品PDF文件")
private String productPdfs;
/**
* 关联的配料信息列表
*/

View File

@@ -0,0 +1,15 @@
package com.gear.mat.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gear.mat.domain.MatProductAddition;
import org.apache.ibatis.annotations.Mapper;
/**
* 产品属性附加表Mapper接口
*
* @author gear
* @date 2026-04-22
*/
@Mapper
public interface MatProductAdditionMapper extends BaseMapper<MatProductAddition> {
}

View File

@@ -0,0 +1,9 @@
package com.gear.mat.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gear.mat.domain.MatProductLabor;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface MatProductLaborMapper extends BaseMapper<MatProductLabor> {
}

View File

@@ -0,0 +1,47 @@
package com.gear.mat.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gear.mat.domain.MatProductAddition;
import com.gear.mat.domain.bo.MatProductAdditionBo;
import com.gear.mat.domain.vo.MatProductAdditionVo;
import java.util.List;
/**
* 产品属性附加表Service接口
*
* @author gear
* @date 2026-04-22
*/
public interface IMatProductAdditionService extends IService<MatProductAddition> {
/**
* 查询产品属性附加表列表
*
* @param productAdditionBo 产品属性附加表业务对象
* @return 产品属性附加表列表
*/
List<MatProductAdditionVo> listProductAddition(MatProductAdditionBo productAdditionBo);
/**
* 新增产品属性附加表
*
* @param productAdditionBo 产品属性附加表业务对象
* @return 新增结果
*/
boolean addProductAddition(MatProductAdditionBo productAdditionBo);
/**
* 修改产品属性附加表
*
* @param productAdditionBo 产品属性附加表业务对象
* @return 修改结果
*/
boolean updateProductAddition(MatProductAdditionBo productAdditionBo);
/**
* 删除产品属性附加表
*
* @param addId 主键ID
* @return 删除结果
*/
boolean delProductAddition(Long addId);
}

View File

@@ -0,0 +1,19 @@
package com.gear.mat.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gear.mat.domain.MatProductLabor;
import com.gear.mat.domain.bo.MatProductLaborBo;
import com.gear.mat.domain.vo.MatProductLaborVo;
import java.util.List;
public interface IMatProductLaborService extends IService<MatProductLabor> {
List<MatProductLaborVo> listProductLabor(MatProductLaborBo productLaborBo);
boolean addProductLabor(MatProductLaborBo productLaborBo);
boolean updateProductLabor(MatProductLaborBo productLaborBo);
boolean delProductLabor(Long laborId);
}

View File

@@ -0,0 +1,54 @@
package com.gear.mat.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gear.mat.domain.MatProductAddition;
import com.gear.mat.domain.bo.MatProductAdditionBo;
import com.gear.mat.domain.vo.MatProductAdditionVo;
import com.gear.mat.mapper.MatProductAdditionMapper;
import com.gear.mat.service.IMatProductAdditionService;
import com.gear.common.utils.BeanCopyUtils;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 产品属性附加表Service实现类
*
* @author gear
* @date 2026-04-22
*/
@Service
public class MatProductAdditionServiceImpl extends ServiceImpl<MatProductAdditionMapper, MatProductAddition> implements IMatProductAdditionService {
@Override
public List<MatProductAdditionVo> listProductAddition(MatProductAdditionBo productAdditionBo) {
LambdaQueryWrapper<MatProductAddition> queryWrapper = new LambdaQueryWrapper<>();
if (productAdditionBo.getProductId() != null) {
queryWrapper.eq(MatProductAddition::getProductId, productAdditionBo.getProductId());
}
if (productAdditionBo.getAttrName() != null) {
queryWrapper.eq(MatProductAddition::getAttrName, productAdditionBo.getAttrName());
}
queryWrapper.eq(MatProductAddition::getDelFlag, 0);
List<MatProductAddition> list = baseMapper.selectList(queryWrapper);
return BeanCopyUtils.copyList(list, MatProductAdditionVo.class);
}
@Override
public boolean addProductAddition(MatProductAdditionBo productAdditionBo) {
MatProductAddition productAddition = BeanCopyUtils.copy(productAdditionBo, MatProductAddition.class);
return save(productAddition);
}
@Override
public boolean updateProductAddition(MatProductAdditionBo productAdditionBo) {
MatProductAddition productAddition = BeanCopyUtils.copy(productAdditionBo, MatProductAddition.class);
return updateById(productAddition);
}
@Override
public boolean delProductAddition(Long addId) {
return removeById(addId);
}
}

View File

@@ -0,0 +1,45 @@
package com.gear.mat.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gear.common.utils.BeanCopyUtils;
import com.gear.mat.domain.MatProductLabor;
import com.gear.mat.domain.bo.MatProductLaborBo;
import com.gear.mat.domain.vo.MatProductLaborVo;
import com.gear.mat.mapper.MatProductLaborMapper;
import com.gear.mat.service.IMatProductLaborService;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class MatProductLaborServiceImpl extends ServiceImpl<MatProductLaborMapper, MatProductLabor> implements IMatProductLaborService {
@Override
public List<MatProductLaborVo> listProductLabor(MatProductLaborBo productLaborBo) {
LambdaQueryWrapper<MatProductLabor> queryWrapper = new LambdaQueryWrapper<>();
if (productLaborBo.getProductId() != null) {
queryWrapper.eq(MatProductLabor::getProductId, productLaborBo.getProductId());
}
queryWrapper.eq(MatProductLabor::getDelFlag, 0);
List<MatProductLabor> list = baseMapper.selectList(queryWrapper);
return BeanCopyUtils.copyList(list, MatProductLaborVo.class);
}
@Override
public boolean addProductLabor(MatProductLaborBo productLaborBo) {
MatProductLabor labor = BeanCopyUtils.copy(productLaborBo, MatProductLabor.class);
return save(labor);
}
@Override
public boolean updateProductLabor(MatProductLaborBo productLaborBo) {
MatProductLabor labor = BeanCopyUtils.copy(productLaborBo, MatProductLabor.class);
return updateById(labor);
}
@Override
public boolean delProductLabor(Long laborId) {
return removeById(laborId);
}
}

View File

@@ -112,7 +112,8 @@ public class MatProductServiceImpl implements IMatProductService {
productWithMaterialsVo.setModel(productVo.getModel());
productWithMaterialsVo.setUnitPrice(productVo.getUnitPrice());
productWithMaterialsVo.setRemark(productVo.getRemark());
// productWithMaterialsVo.setProductImages(productVo.getProductImages());
productWithMaterialsVo.setProductImages(productVo.getProductImages());
productWithMaterialsVo.setProductPdfs(productVo.getProductPdfs());
// 查询并设置关联的配料信息
List<MatProductMaterialRelationVo> relations = productMaterialRelationService.queryList(
@@ -169,7 +170,9 @@ public class MatProductServiceImpl implements IMatProductService {
*/
@Override
public Boolean insertByBo(MatProductBo bo) {
System.out.println("插入产品productPdfs: " + bo.getProductPdfs());
MatProduct add = BeanUtil.toBean(bo, MatProduct.class);
System.out.println("转换后productPdfs: " + add.getProductPdfs());
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
@@ -183,7 +186,9 @@ public class MatProductServiceImpl implements IMatProductService {
*/
@Override
public Boolean updateByBo(MatProductBo bo) {
System.out.println("修改产品productPdfs: " + bo.getProductPdfs());
MatProduct update = BeanUtil.toBean(bo, MatProduct.class);
System.out.println("转换后productPdfs: " + update.getProductPdfs());
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}