master:编辑商品工艺信息功能完善;

pull/1121/head
liujiang 2025-11-16 18:11:57 +08:00
parent eac89b3d11
commit 75c3ce60ed
9 changed files with 311 additions and 3 deletions

View File

@ -1,8 +1,22 @@
package com.ruoyi.web.controller.xkt;
import cn.hutool.core.bean.BeanUtil;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.XktBaseController;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.web.controller.xkt.vo.storeProdProcess.StoreProdProcessResVO;
import com.ruoyi.web.controller.xkt.vo.storeProdProcess.StoreProdProcessUpdateVO;
import com.ruoyi.xkt.dto.storeProdProcess.StoreProdProcessUpdateDTO;
import com.ruoyi.xkt.service.IStoreProductProcessService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
/**
* Controller
@ -12,6 +26,26 @@ import org.springframework.web.bind.annotation.RestController;
*/
@RestController
@RequestMapping("/rest/v1/prod-processes")
@RequiredArgsConstructor
@Api(tags = "档口商品工艺")
public class StoreProductProcessController extends XktBaseController {
final IStoreProductProcessService prodProcessService;
@PreAuthorize("@ss.hasAnyRoles('admin,general_admin,store')||@ss.hasSupplierSubRole()")
@ApiOperation(value = "获取档口商品工艺详细信息", httpMethod = "GET", response = R.class)
@GetMapping(value = "/{storeProdId}")
public R<StoreProdProcessResVO> getProcess(@PathVariable("storeProdId") Long storeProdId) {
return R.ok(BeanUtil.toBean(prodProcessService.getProcess(storeProdId), StoreProdProcessResVO.class));
}
@PreAuthorize("@ss.hasAnyRoles('admin,general_admin,store')||@ss.hasSupplierSubRole()")
@ApiOperation(value = "更新商品工艺信息", httpMethod = "PUT", response = R.class)
@Log(title = "更新商品工艺信息", businessType = BusinessType.UPDATE)
@PutMapping("/{storeProdId}")
public R<Integer> update(@PathVariable Long storeProdId, @Validated @RequestBody StoreProdProcessUpdateVO processUpdateVO) throws IOException {
return R.ok(prodProcessService.update(storeProdId, BeanUtil.toBean(processUpdateVO, StoreProdProcessUpdateDTO.class)));
}
}

View File

@ -196,7 +196,7 @@ public class StoreProdCreateVO {
@ApiModelProperty(value = "颜色名称", required = true)
private String colorName;
@NotBlank(message = "内里材质不可为空!")
@ApiModelProperty(value = "内里材质" , required = true)
@ApiModelProperty(value = "内里材质", required = true)
private String shoeUpperLiningMaterial;
@ApiModelProperty(value = "商品尺码", required = true)
@NotNull(message = "档口商品定价不能为空!")
@ -226,6 +226,10 @@ public class StoreProdCreateVO {
@Data
@ApiModel
public static class StoreProdProcessVO {
@ApiModelProperty(value = "客户")
private String partnerName;
@ApiModelProperty(value = "商标")
private String trademark;
@ApiModelProperty(value = "鞋型")
private String shoeType;
@ApiModelProperty(value = "楦号")

View File

@ -166,6 +166,10 @@ public class StoreProdResVO {
@Data
public static class StoreProdProcessVO {
@ApiModelProperty(value = "客户")
private String partnerName;
@ApiModelProperty(value = "商标")
private String trademark;
@ApiModelProperty(value = "鞋型")
private String shoeType;
@ApiModelProperty(value = "楦号")

View File

@ -0,0 +1,63 @@
package com.ruoyi.web.controller.xkt.vo.storeProdProcess;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author liujiang
* @version v1.0
* @date 2025/3/27 15:12
*/
@Data
@ApiModel
public class StoreProdProcessResVO {
@ApiModelProperty(value = "客户")
private String partnerName;
@ApiModelProperty(value = "商标")
private String trademark;
@ApiModelProperty(value = "鞋型")
private String shoeType;
@ApiModelProperty(value = "楦号")
private String shoeSize;
@ApiModelProperty(value = "主皮")
private String mainSkin;
@ApiModelProperty(value = "主皮用量")
private String mainSkinUsage;
@ApiModelProperty(value = "配皮")
private String matchSkin;
@ApiModelProperty(value = "配皮用量")
private String matchSkinUsage;
@ApiModelProperty(value = "领口")
private String neckline;
@ApiModelProperty(value = "膛底")
private String insole;
@ApiModelProperty(value = "扣件/拉头")
private String fastener;
@ApiModelProperty(value = "辅料")
private String shoeAccessories;
@ApiModelProperty(value = "包头")
private String toeCap;
@ApiModelProperty(value = "包边")
private String edgeBinding;
@ApiModelProperty(value = "中大底")
private String midOutsole;
@ApiModelProperty(value = "防水台")
private String platformSole;
@ApiModelProperty(value = "中底厂家编码")
private String midsoleFactoryCode;
@ApiModelProperty(value = "外底厂家编码")
private String outsoleFactoryCode;
@ApiModelProperty(value = "跟厂编码")
private String heelFactoryCode;
@ApiModelProperty(value = "配料")
private String components;
@ApiModelProperty(value = "第二底料")
private String secondSoleMaterial;
@ApiModelProperty(value = "第二配料")
private String secondUpperMaterial;
@ApiModelProperty(value = "自定义")
private String customAttr;
}

View File

@ -0,0 +1,65 @@
package com.ruoyi.web.controller.xkt.vo.storeProdProcess;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author liujiang
* @version v1.0
* @date 2025/3/27 15:12
*/
@Data
@ApiModel
public class StoreProdProcessUpdateVO {
@ApiModelProperty(value = "客户")
private String partnerName;
@ApiModelProperty(value = "商标")
private String trademark;
@ApiModelProperty(value = "鞋型")
private String shoeType;
@ApiModelProperty(value = "楦号")
private String shoeSize;
@ApiModelProperty(value = "主皮")
private String mainSkin;
@ApiModelProperty(value = "主皮用量")
private String mainSkinUsage;
@ApiModelProperty(value = "配皮")
private String matchSkin;
@ApiModelProperty(value = "配皮用量")
private String matchSkinUsage;
@ApiModelProperty(value = "领口")
private String neckline;
@ApiModelProperty(value = "膛底")
private String insole;
@ApiModelProperty(value = "扣件/拉头")
private String fastener;
@ApiModelProperty(value = "辅料")
private String shoeAccessories;
@ApiModelProperty(value = "包头")
private String toeCap;
@ApiModelProperty(value = "包边")
private String edgeBinding;
@ApiModelProperty(value = "中大底")
private String midOutsole;
@ApiModelProperty(value = "防水台")
private String platformSole;
@ApiModelProperty(value = "中底厂家编码")
private String midsoleFactoryCode;
@ApiModelProperty(value = "外底厂家编码")
private String outsoleFactoryCode;
@ApiModelProperty(value = "跟厂编码")
private String heelFactoryCode;
@ApiModelProperty(value = "配料")
private String components;
@ApiModelProperty(value = "第二底料")
private String secondSoleMaterial;
@ApiModelProperty(value = "第二配料")
private String secondUpperMaterial;
@ApiModelProperty(value = "自定义")
private String customAttr;
}

View File

@ -13,6 +13,10 @@ public class StoreProdProcessDTO {
@ApiModelProperty(value = "档口商品ID")
private Long storeProdId;
@ApiModelProperty(value = "客户")
private String partnerName;
@ApiModelProperty(value = "商标")
private String trademark;
@ApiModelProperty(value = "鞋型")
private String shoeType;
@ApiModelProperty(value = "楦号")

View File

@ -0,0 +1,63 @@
package com.ruoyi.xkt.dto.storeProdProcess;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author liujiang
* @version v1.0
* @date 2025/3/27 15:12
*/
@Data
@ApiModel
public class StoreProdProcessUpdateDTO {
@ApiModelProperty(value = "客户")
private String partnerName;
@ApiModelProperty(value = "商标")
private String trademark;
@ApiModelProperty(value = "鞋型")
private String shoeType;
@ApiModelProperty(value = "楦号")
private String shoeSize;
@ApiModelProperty(value = "主皮")
private String mainSkin;
@ApiModelProperty(value = "主皮用量")
private String mainSkinUsage;
@ApiModelProperty(value = "配皮")
private String matchSkin;
@ApiModelProperty(value = "配皮用量")
private String matchSkinUsage;
@ApiModelProperty(value = "领口")
private String neckline;
@ApiModelProperty(value = "膛底")
private String insole;
@ApiModelProperty(value = "扣件/拉头")
private String fastener;
@ApiModelProperty(value = "辅料")
private String shoeAccessories;
@ApiModelProperty(value = "包头")
private String toeCap;
@ApiModelProperty(value = "包边")
private String edgeBinding;
@ApiModelProperty(value = "中大底")
private String midOutsole;
@ApiModelProperty(value = "防水台")
private String platformSole;
@ApiModelProperty(value = "中底厂家编码")
private String midsoleFactoryCode;
@ApiModelProperty(value = "外底厂家编码")
private String outsoleFactoryCode;
@ApiModelProperty(value = "跟厂编码")
private String heelFactoryCode;
@ApiModelProperty(value = "配料")
private String components;
@ApiModelProperty(value = "第二底料")
private String secondSoleMaterial;
@ApiModelProperty(value = "第二配料")
private String secondUpperMaterial;
@ApiModelProperty(value = "自定义")
private String customAttr;
}

View File

@ -1,5 +1,8 @@
package com.ruoyi.xkt.service;
import com.ruoyi.xkt.dto.storeProdProcess.StoreProdProcessDTO;
import com.ruoyi.xkt.dto.storeProdProcess.StoreProdProcessUpdateDTO;
/**
* Service
*
@ -8,4 +11,21 @@ package com.ruoyi.xkt.service;
*/
public interface IStoreProductProcessService {
/**
*
*
* @param storeProdId ID
* @return
*/
StoreProdProcessDTO getProcess(Long storeProdId);
/**
*
*
* @param storeProdId ID
* @param updateDTO
* @return Integer
*/
Integer update(Long storeProdId, StoreProdProcessUpdateDTO updateDTO);
}

View File

@ -1,7 +1,21 @@
package com.ruoyi.xkt.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.xkt.domain.StoreProductProcess;
import com.ruoyi.xkt.dto.storeProdProcess.StoreProdProcessDTO;
import com.ruoyi.xkt.dto.storeProdProcess.StoreProdProcessUpdateDTO;
import com.ruoyi.xkt.mapper.StoreProductProcessMapper;
import com.ruoyi.xkt.service.IStoreProductProcessService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Optional;
/**
* Service
@ -9,7 +23,44 @@ import org.springframework.stereotype.Service;
* @author ruoyi
* @date 2025-03-26
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class StoreProductProcessServiceImpl implements IStoreProductProcessService {
final StoreProductProcessMapper prodProcessMapper;
/**
*
*
* @param storeProdId ID
* @return
*/
@Override
@Transactional(readOnly = true)
public StoreProdProcessDTO getProcess(Long storeProdId) {
StoreProductProcess process = Optional.ofNullable(this.prodProcessMapper.selectOne(new LambdaQueryWrapper<StoreProductProcess>()
.eq(StoreProductProcess::getStoreProdId, storeProdId).eq(StoreProductProcess::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("档口商品工艺不存在!", HttpStatus.ERROR));
return BeanUtil.toBean(process, StoreProdProcessDTO.class);
}
/**
*
*
* @param storeProdId ID
* @param updateDTO
* @return Integer
*/
@Override
@Transactional
public Integer update(Long storeProdId, StoreProdProcessUpdateDTO updateDTO) {
StoreProductProcess process = Optional.ofNullable(this.prodProcessMapper.selectOne(new LambdaQueryWrapper<StoreProductProcess>()
.eq(StoreProductProcess::getStoreProdId, storeProdId).eq(StoreProductProcess::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("档口商品工艺不存在!", HttpStatus.ERROR));
BeanUtil.copyProperties(updateDTO, process);
return this.prodProcessMapper.updateById(process);
}
}