master:VO对swagger进行调优;

pull/1121/head
liujiang 2025-04-05 18:03:58 +08:00
parent 729a2f614f
commit e6504511fb
65 changed files with 1050 additions and 1403 deletions

View File

@ -1,18 +1,19 @@
package com.ruoyi.web.controller.xkt;
import com.ruoyi.common.annotation.Log;
import cn.hutool.core.bean.BeanUtil;
import com.ruoyi.common.core.controller.XktBaseController;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.xkt.domain.StoreColor;
import com.ruoyi.web.controller.xkt.vo.storeColor.StoreColorVO;
import com.ruoyi.xkt.service.IStoreColorService;
import org.springframework.beans.factory.annotation.Autowired;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
@ -22,70 +23,21 @@ import java.util.List;
* @date 2025-03-26
*/
@RestController
@Api(tags = "档口所有颜色")
@RequiredArgsConstructor
@RequestMapping("/rest/v1/store-colors")
public class StoreColorController extends XktBaseController {
@Autowired
private IStoreColorService storeColorService;
final IStoreColorService storeColorService;
/**
*
*
*/
@PreAuthorize("@ss.hasPermi('system:color:list')")
@GetMapping("/list")
public TableDataInfo list(StoreColor storeColor) {
startPage();
List<StoreColor> list = storeColorService.selectStoreColorList(storeColor);
return getDataTable(list);
@PreAuthorize("@ss.hasPermi('system:product:list')")
@ApiOperation(value = "查询档口颜色列表", httpMethod = "GET", response = R.class)
@GetMapping("/list/{storeId}")
public R<List<StoreColorVO>> list(@PathVariable Long storeId) {
return R.ok(BeanUtil.copyToList(storeColorService.list(storeId), StoreColorVO.class));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('system:color:export')")
@Log(title = "档口所有颜色", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, StoreColor storeColor) {
List<StoreColor> list = storeColorService.selectStoreColorList(storeColor);
ExcelUtil<StoreColor> util = new ExcelUtil<StoreColor>(StoreColor.class);
util.exportExcel(response, list, "档口所有颜色数据");
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('system:color:query')")
@GetMapping(value = "/{storeColorId}")
public R getInfo(@PathVariable("storeColorId") Long storeColorId) {
return success(storeColorService.selectStoreColorByStoreColorId(storeColorId));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('system:color:add')")
@Log(title = "档口所有颜色", businessType = BusinessType.INSERT)
@PostMapping
public R add(@RequestBody StoreColor storeColor) {
return success(storeColorService.insertStoreColor(storeColor));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('system:color:edit')")
@Log(title = "档口所有颜色", businessType = BusinessType.UPDATE)
@PutMapping
public R edit(@RequestBody StoreColor storeColor) {
return success(storeColorService.updateStoreColor(storeColor));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('system:color:remove')")
@Log(title = "档口所有颜色", businessType = BusinessType.DELETE)
@DeleteMapping("/{storeColorIds}")
public R remove(@PathVariable Long[] storeColorIds) {
return success(storeColorService.deleteStoreColorByStoreColorIds(storeColorIds));
}
}

View File

@ -10,16 +10,10 @@ import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.web.controller.xkt.vo.storeCustomer.StoreCusPageVO;
import com.ruoyi.web.controller.xkt.vo.storeProductDemand.StoreProdDemandPageResVO;
import com.ruoyi.web.controller.xkt.vo.storeProductDemand.StoreProdDemandPageVO;
import com.ruoyi.web.controller.xkt.vo.storeProductDemand.StoreProdDemandQuantityVO;
import com.ruoyi.web.controller.xkt.vo.storeProductDemand.StoreProdDemandVO;
import com.ruoyi.web.controller.xkt.vo.storeProductDemand.*;
import com.ruoyi.xkt.domain.StoreProductDemand;
import com.ruoyi.xkt.dto.storeCustomer.StoreCusPageDTO;
import com.ruoyi.xkt.dto.storeProductDemand.StoreProdDemandDTO;
import com.ruoyi.xkt.dto.storeProductDemand.StoreProdDemandPageDTO;
import com.ruoyi.xkt.dto.storeProductDemand.StoreProdDemandPageResDTO;
import com.ruoyi.xkt.dto.storeProductDemand.StoreProdDemandQuantityDTO;
import com.ruoyi.xkt.dto.storeProductDemand.*;
import com.ruoyi.xkt.service.IStoreProductDemandService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -53,6 +47,17 @@ public class StoreProductDemandController extends XktBaseController {
// TODO 入库单判断需求单是否存在
// TODO 入库单判断需求单是否存在
// TODO 删除需求单,若该需求单有已完成的入库单,则该需求单状态改为已完成,并将数量改为已完成的入库单数量
// TODO 删除需求单,若该需求单有已完成的入库单,则该需求单状态改为已完成,并将数量改为已完成的入库单数量
// TODO 删除需求单,若该需求单有已完成的入库单,则该需求单状态改为已完成,并将数量改为已完成的入库单数量
// TODO 删除需求单,若该需求单有已完成的入库单,则该需求单状态改为已完成,并将数量改为已完成的入库单数量
// TODO 点击安排生产,状态才会变成:生产中,若仅仅是由入库单来反推,则不能变更状态
// TODO 点击安排生产,状态才会变成:生产中,若仅仅是由入库单来反推,则不能变更状态
// TODO 点击安排生产,状态才会变成:生产中,若仅仅是由入库单来反推,则不能变更状态
/**
*
*/
@ -84,6 +89,28 @@ public class StoreProductDemandController extends XktBaseController {
return R.ok(storeProdDemandService.selectPage(BeanUtil.toBean(pageVO, StoreProdDemandPageDTO.class)));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('system:demand:edit')")
@ApiOperation(value = "点击安排生产", httpMethod = "PUT", response = R.class)
@Log(title = "点击安排生产", businessType = BusinessType.UPDATE)
@PutMapping
public R<Integer> updateWorkingStatus(@Validated @RequestBody StoreProdDemandWorkingVO workingVO) {
return R.ok(storeProdDemandService.updateWorkingStatus(BeanUtil.toBean(workingVO, StoreProdDemandWorkingDTO.class)));
}
/**
*
@ -95,15 +122,7 @@ public class StoreProductDemandController extends XktBaseController {
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('system:demand:edit')")
@Log(title = "档口商品需求单", businessType = BusinessType.UPDATE)
@PutMapping
public R edit(@RequestBody StoreProductDemand storeProductDemand) {
return success(storeProdDemandService.updateStoreProductDemand(storeProductDemand));
}
/**
*

View File

@ -60,9 +60,9 @@ public class StoreProductStorageController extends XktBaseController {
*/
@PreAuthorize("@ss.hasPermi('system:storage:query')")
@ApiOperation(value = "获取档口商品入库详细信息", httpMethod = "GET", response = R.class)
@GetMapping(value = "/{storeProdStorId}")
public R<StoreProdStorageResVO> getInfo(@PathVariable("storeProdStorId") Long storeProdStorId) {
return R.ok(BeanUtil.toBean(storeProdStorageService.selectByStoreProdStorId(storeProdStorId), StoreProdStorageResVO.class));
@GetMapping(value = "/{storeProdStorageId}")
public R<StoreProdStorageResVO> getInfo(@PathVariable("storeProdStorageId") Long storeProdStorageId) {
return R.ok(BeanUtil.toBean(storeProdStorageService.selectByStoreProdStorageId(storeProdStorageId), StoreProdStorageResVO.class));
}
/**
@ -72,8 +72,8 @@ public class StoreProductStorageController extends XktBaseController {
@ApiOperation(value = "撤销档口商品入库", httpMethod = "DELETE", response = R.class)
@Log(title = "撤销档口商品入库", businessType = BusinessType.DELETE)
@DeleteMapping("/{storeProdStorageId}")
public R remove(@PathVariable Long storeProdStorageId) {
return R.ok(storeProdStorageService.deleteByStoreProdStorId(storeProdStorageId));
public R<Integer> remove(@PathVariable Long storeProdStorageId) {
return R.ok(storeProdStorageService.deleteByStoreProdStorageId(storeProdStorageId));
}

View File

@ -27,65 +27,4 @@ public class StoreProductStorageDemandDeducteController extends XktBaseControlle
@Autowired
private IStoreProductStorageDemandDeducteService storeProductStorageDemandDeducteService;
/**
*
*/
@PreAuthorize("@ss.hasPermi('system:deducte:list')")
@GetMapping("/list")
public TableDataInfo list(StoreProductStorageDemandDeduct storeProductStorageDemandDeducte) {
startPage();
List<StoreProductStorageDemandDeduct> list = storeProductStorageDemandDeducteService.selectStoreProductStorageDemandDeducteList(storeProductStorageDemandDeducte);
return getDataTable(list);
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('system:deducte:export')")
@Log(title = "档口商品入库抵扣需求", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, StoreProductStorageDemandDeduct storeProductStorageDemandDeducte) {
List<StoreProductStorageDemandDeduct> list = storeProductStorageDemandDeducteService.selectStoreProductStorageDemandDeducteList(storeProductStorageDemandDeducte);
ExcelUtil<StoreProductStorageDemandDeduct> util = new ExcelUtil<StoreProductStorageDemandDeduct>(StoreProductStorageDemandDeduct.class);
util.exportExcel(response, list, "档口商品入库抵扣需求数据");
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('system:deducte:query')")
@GetMapping(value = "/{storeProdStorDemaDeducteId}")
public R getInfo(@PathVariable("storeProdStorDemaDeducteId") Long storeProdStorDemaDeducteId) {
return success(storeProductStorageDemandDeducteService.selectStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteId(storeProdStorDemaDeducteId));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('system:deducte:add')")
@Log(title = "档口商品入库抵扣需求", businessType = BusinessType.INSERT)
@PostMapping
public R add(@RequestBody StoreProductStorageDemandDeduct storeProductStorageDemandDeducte) {
return success(storeProductStorageDemandDeducteService.insertStoreProductStorageDemandDeducte(storeProductStorageDemandDeducte));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('system:deducte:edit')")
@Log(title = "档口商品入库抵扣需求", businessType = BusinessType.UPDATE)
@PutMapping
public R edit(@RequestBody StoreProductStorageDemandDeduct storeProductStorageDemandDeducte) {
return success(storeProductStorageDemandDeducteService.updateStoreProductStorageDemandDeducte(storeProductStorageDemandDeducte));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('system:deducte:remove')")
@Log(title = "档口商品入库抵扣需求", businessType = BusinessType.DELETE)
@DeleteMapping("/{storeProdStorDemaDeducteIds}")
public R remove(@PathVariable Long[] storeProdStorDemaDeducteIds) {
return success(storeProductStorageDemandDeducteService.deleteStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteIds(storeProdStorDemaDeducteIds));
}
}

View File

@ -16,10 +16,10 @@ import javax.validation.constraints.NotNull;
public class BasePageVO {
@NotNull(message = "pageNum不能为空")
@ApiModelProperty(name = "pageNum")
@ApiModelProperty(value = "pageNum", required = true)
private int pageNum;
@NotNull(message = "pageSize不能为空")
@ApiModelProperty(name = "pageSize")
@ApiModelProperty(value = "pageSize", required = true)
private int pageSize;
}

View File

@ -11,13 +11,13 @@ import java.util.List;
* @author liangyq
* @date 2025-04-02 22:31
*/
@ApiModel
@ApiModel("订单新增参数")
@Data
public class StoreOrderAddReqVO {
/**
* ID
*/
@ApiModelProperty("档口ID")
@ApiModelProperty(value = "档口ID")
private Long storeId;
// /**
// * 下单用户ID
@ -26,67 +26,67 @@ public class StoreOrderAddReqVO {
/**
*
*/
@ApiModelProperty("订单备注")
@ApiModelProperty(value = "订单备注")
private String orderRemark;
/**
* ID
*/
@ApiModelProperty("物流ID")
@ApiModelProperty(value = "物流ID")
private Long expressId;
/**
* -
*/
@ApiModelProperty("收货人-名称")
@ApiModelProperty(value = "收货人-名称")
private String destinationContactName;
/**
* -
*/
@ApiModelProperty("收货人-电话")
@ApiModelProperty(value = "收货人-电话")
private String destinationContactPhoneNumber;
/**
* -
*/
@ApiModelProperty("收货人-省编码")
@ApiModelProperty(value = "收货人-省编码")
private String destinationProvinceCode;
/**
* -
*/
@ApiModelProperty("收货人-市编码")
@ApiModelProperty(value = "收货人-市编码")
private String destinationCityCode;
/**
* -
*/
@ApiModelProperty("收货人-区县编码")
@ApiModelProperty(value = "收货人-区县编码")
private String destinationCountyCode;
/**
* -
*/
@ApiModelProperty("收货人-详细地址")
@ApiModelProperty(value = "收货人-详细地址")
private String destinationDetailAddress;
/**
* [1: 2:]
*/
@ApiModelProperty("发货方式[1:货其再发 2:有货先发]")
@ApiModelProperty(value = "发货方式[1:货其再发 2:有货先发]")
private Integer deliveryType;
/**
*
*/
@ApiModelProperty("最晚发货时间")
@ApiModelProperty(value = "最晚发货时间")
private Date deliveryEndTime;
/**
*
*/
@ApiModelProperty("明细列表")
@ApiModelProperty(value = "明细列表")
private List<Detail> detailList;
@ApiModel
@ApiModel(value = "明细")
@Data
public static class Detail {
@ApiModelProperty("商品颜色尺码ID")
@ApiModelProperty(value = "商品颜色尺码ID")
private Long storeProdColorSizeId;
@ApiModelProperty("商品数量")
@ApiModelProperty(value = "商品数量")
private Integer goodsQuantity;
}
}

View File

@ -13,11 +13,11 @@ import lombok.Data;
@Data
public class StoreColorVO {
@ApiModelProperty(name = "档口颜色ID")
@ApiModelProperty(value = "档口颜色ID")
private Long storeColorId;
@ApiModelProperty(name = "颜色名称")
@ApiModelProperty(value = "颜色名称")
private String colorName;
@ApiModelProperty(name = "排序")
@ApiModelProperty(value = "排序")
private Integer orderNum;
}

View File

@ -19,18 +19,18 @@ import java.math.BigDecimal;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class StoreCusProdDiscountVO {
@ApiModelProperty(name = "档口ID")
@ApiModelProperty(value = "档口ID", required = true)
@NotNull(message = "档口ID不能为空!")
private Long storeId;
@ApiModelProperty(name = "档口客户ID")
@ApiModelProperty(value = "档口客户ID")
private Long storeCusId;
@NotBlank(message = "客户名称不能为空!")
@ApiModelProperty(name = "客户名称")
@ApiModelProperty(value = "客户名称", required = true)
private String storeCusName;
@ApiModelProperty(name = "客户联系电话")
@ApiModelProperty(value = "客户联系电话")
private String phone;
@NotNull(message = "优惠金额不能为空!")
@ApiModelProperty(name = "优惠金额")
@ApiModelProperty(value = "优惠金额", required = true)
private BigDecimal discount;
}

View File

@ -17,11 +17,11 @@ import lombok.experimental.Accessors;
@Accessors(chain = true)
public class StoreCusFuzzyResVO {
@ApiModelProperty("档口客户ID")
@ApiModelProperty(value = "档口客户ID")
private Long storeCusId;
@ApiModelProperty("档口ID")
@ApiModelProperty(value = "档口ID")
private Long storeId;
@ApiModelProperty(name = "客户名称")
@ApiModelProperty(value = "客户名称")
private String cusName;
}

View File

@ -17,17 +17,17 @@ import java.math.BigDecimal;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class StoreCusGeneralSaleVO {
@ApiModelProperty(name = "档口ID")
@ApiModelProperty(value = "档口ID")
private Long storeId;
@ApiModelProperty(name = "档口客户ID")
@ApiModelProperty(value = "档口客户ID")
private Long storeCusId;
@ApiModelProperty(name = "档口客户名称")
@ApiModelProperty(value = "档口客户名称")
private String storeCusName;
@ApiModelProperty(name = "销售多少双")
@ApiModelProperty(value = "销售多少双")
private Long saleCount;
@ApiModelProperty(name = "销售金额")
@ApiModelProperty(value = "销售金额")
private BigDecimal saleAmount;
@ApiModelProperty(name = "欠款金额")
@ApiModelProperty(value = "欠款金额")
private BigDecimal debtAmount;
}

View File

@ -18,9 +18,9 @@ import javax.validation.constraints.NotNull;
@Data
public class StoreCusPageVO extends BasePageVO {
@ApiModelProperty(name = "客户名称")
@ApiModelProperty(value = "客户名称")
private String cusName;
@ApiModelProperty(name = "档口ID")
@ApiModelProperty(value = "档口ID", required = true)
@NotNull(message = "档口ID不能为空")
private Long storeId;

View File

@ -19,16 +19,16 @@ import javax.validation.constraints.NotNull;
public class StoreCusVO {
@NotNull(message = "档口ID不能为空!")
@ApiModelProperty(name = "档口ID")
@ApiModelProperty(value = "档口ID", required = true)
private Long storeId;
@ApiModelProperty(name = "档口客户ID", notes = "新增为空,编辑必传")
@ApiModelProperty(value = "档口客户ID 新增为空,编辑必传")
private Long storeCusId;
@NotBlank(message = "客户名称不能为空!")
@ApiModelProperty(name = "客户名称")
@ApiModelProperty(value = "客户名称", required = true)
private String cusName;
@ApiModelProperty(name = "客户联系电话")
@ApiModelProperty(value = "客户联系电话")
private String phone;
@ApiModelProperty("备注")
@ApiModelProperty(value = "备注")
private String remark;
}

View File

@ -18,9 +18,9 @@ import javax.validation.constraints.NotNull;
@Data
public class StoreFactoryPageVO extends BasePageVO {
@ApiModelProperty(name = "工厂名称")
@ApiModelProperty(value = "工厂名称")
private String facName;
@ApiModelProperty(name = "档口ID")
@ApiModelProperty(value = "档口ID", required = true)
@NotNull(message = "档口ID不能为空")
private Long storeId;

View File

@ -18,19 +18,19 @@ import javax.validation.constraints.NotNull;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class StoreFactoryVO {
@ApiModelProperty(name = "档口ID")
@ApiModelProperty(value = "档口ID", required = true)
@NotNull(message = "档口ID不能为空!")
private Long storeId;
@ApiModelProperty(name = "档口工厂ID", notes = "新增不传 编辑必传")
@ApiModelProperty(value = "档口工厂ID[新增不传 编辑必传]")
private Long storeFactoryId;
@NotBlank(message = "工厂名称不能为空!")
@ApiModelProperty(name = "工厂名称")
@ApiModelProperty(value = "工厂名称", required = true)
private String facName;
@ApiModelProperty(name = "工厂地址")
@ApiModelProperty(value = "工厂地址")
private String facAddress;
@ApiModelProperty(name = "工厂联系电话")
@ApiModelProperty(value = "工厂联系电话")
private String facPhone;
@ApiModelProperty("备注")
@ApiModelProperty(value = "备注")
private String remark;
}

View File

@ -4,9 +4,6 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* @author liujiang
* @version v1.0
@ -16,17 +13,17 @@ import javax.validation.constraints.NotNull;
@Data
public class StoreProdColorResVO {
@ApiModelProperty(name = "档口ID")
@ApiModelProperty(value = "档口ID")
private Long storeId;
@ApiModelProperty(name = "档口颜色ID")
@ApiModelProperty(value = "档口颜色ID")
private Long storeColorId;
@ApiModelProperty(name = "商品货号")
@ApiModelProperty(value = "商品货号")
private String prodArtNum;
@ApiModelProperty(name = "商品分类名称")
@ApiModelProperty(value = "商品分类名称")
private String prodCateName;
@ApiModelProperty(name = "颜色名称")
@ApiModelProperty(value = "颜色名称")
private String colorName;
@ApiModelProperty(name = "排序")
@ApiModelProperty(value = "排序")
private Integer orderNum;
}

View File

@ -2,13 +2,10 @@ package com.ruoyi.web.controller.xkt.vo.storeProd;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.util.List;
/**
@ -22,20 +19,21 @@ import java.util.List;
@Accessors(chain = true)
public class StoreProdFuzzyResVO {
@ApiModelProperty("档口商品ID")
@ApiModelProperty(value = "档口商品ID")
private Long storeProdId;
@ApiModelProperty("档口ID")
@ApiModelProperty(value = "档口ID")
private Long storeId;
@ApiModelProperty(name = "商品货号")
@ApiModelProperty(value = "商品货号")
private String prodArtNum;
@ApiModelProperty("商品颜色列表")
@ApiModelProperty(value = "商品颜色列表")
private List<StoreProdFuzzyColorResVO> colorList;
@Data
@ApiModel(value = "商品颜色列表")
public static class StoreProdFuzzyColorResVO {
@ApiModelProperty("档口颜色ID")
@ApiModelProperty(value = "档口颜色ID")
private Long storeColorId;
@ApiModelProperty("颜色名称")
@ApiModelProperty(value = "颜色名称")
private String colorName;
}
}

View File

@ -17,21 +17,21 @@ import java.util.List;
@Data
public class StoreProdPageResVO {
@ApiModelProperty(name = "档口商品主图url")
@ApiModelProperty(value = "档口商品主图url")
private String mainPicUrl;
@ApiModelProperty(name = "商品货号")
@ApiModelProperty(value = "商品货号")
private String prodArtNum;
@ApiModelProperty(name = "颜色")
@ApiModelProperty(value = "颜色")
private String colorName;
@ApiModelProperty(name = "分类类目")
@ApiModelProperty(value = "分类类目")
private String prodCateName;
@ApiModelProperty(name = "标准尺码")
@ApiModelProperty(value = "标准尺码")
private List<Integer> standardSizeList;
@ApiModelProperty(name = "销售金额(元)")
@ApiModelProperty(value = "销售金额(元)")
private BigDecimal price;
@ApiModelProperty(name = "状态")
@ApiModelProperty(value = "状态")
private Integer prodStatus;
@ApiModelProperty(name = "创建时间")
@ApiModelProperty(value = "创建时间")
private Date createTime;
}

View File

@ -18,12 +18,15 @@ import javax.validation.constraints.NotNull;
@Data
public class StoreProdPageVO extends BasePageVO {
@ApiModelProperty(name = "商品货号")
@ApiModelProperty(value = "商品货号")
private String prodArtNum;
@ApiModelProperty(name = "商品分类ID")
@ApiModelProperty(value = "商品分类ID")
private Long prodCateId;
@ApiModelProperty(name = "档口ID")
@ApiModelProperty(value = "档口ID", required = true)
@NotNull(message = "档口ID不能为空")
private Long storeId;
@ApiModelProperty(value = "商品状态[1未发布2在售3尾货4已下架5已删除]", required = true)
@NotNull(message = "商品状态不能为空")
private Integer prodStatus;
}

View File

@ -16,11 +16,11 @@ import java.util.List;
@Data
public class StoreProdPicSpaceResVO {
@ApiModelProperty(name = "档口ID")
@ApiModelProperty(value = "档口ID")
private Long storeId;
@ApiModelProperty(name = "档口名称")
@ApiModelProperty(value = "档口名称")
private String storeName;
@ApiModelProperty(name = "档口文件列表")
@ApiModelProperty(value = "档口文件列表")
private List<StoreProdFilePicSpaceResVO> fileList;
}

View File

@ -19,152 +19,159 @@ import java.util.List;
@Data
public class StoreProdResVO {
@ApiModelProperty("档口商品名称")
@ApiModelProperty(value = "档口商品名称")
private Long storeProdId;
@ApiModelProperty("档口ID")
@ApiModelProperty(value = "档口ID")
private Long storeId;
@ApiModelProperty("档口商品名称")
@ApiModelProperty(value = "档口商品名称")
private String prodName;
@ApiModelProperty(name = "商品分类ID")
@ApiModelProperty(value = "商品分类ID")
private Long prodCateId;
@ApiModelProperty(name = "工厂货号")
@ApiModelProperty(value = "工厂货号")
private String factoryArtNum;
@ApiModelProperty(name = "商品货号")
@ApiModelProperty(value = "商品货号")
private String prodArtNum;
@ApiModelProperty(name = "商品标题")
@ApiModelProperty(value = "商品标题")
private String prodTitle;
@ApiModelProperty(name = "商品重量")
@ApiModelProperty(value = "商品重量")
private BigDecimal prodWeight;
@ApiModelProperty(name = "生产价格")
@ApiModelProperty(value = "生产价格")
private Integer producePrice;
@ApiModelProperty(name = "大小码加价")
@ApiModelProperty(value = "大小码加价")
private Integer overPrice;
@ApiModelProperty(name = "发货时效")
@ApiModelProperty(value = "发货时效")
private Integer deliveryTime;
@ApiModelProperty(name = "上架方式")
@ApiModelProperty(value = "上架方式")
private Integer listingWay;
@ApiModelProperty(name = "定时发货时间(精确到小时)")
@ApiModelProperty(value = "定时发货时间(精确到小时)")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private Date listingWaySchedule;
@ApiModelProperty(name = "档口文件列表")
@ApiModelProperty(value = "档口文件列表")
private List<StoreProdFileVO> fileList;
@ApiModelProperty(name = "档口类目属性列表")
@ApiModelProperty(value = "档口类目属性列表")
private List<StoreProdCateAttrVO> cateAttrList;
@ApiModelProperty(name = "档口所有颜色列表")
@ApiModelProperty(value = "档口所有颜色列表")
private List<StoreColorVO> allColorList;
@ApiModelProperty(name = "商品颜色列表")
@ApiModelProperty(value = "商品颜色列表")
private List<StoreColorVO> colorList;
@ApiModelProperty(name = "档口颜色价格列表")
@ApiModelProperty(value = "档口颜色价格列表")
private List<StoreProdColorPriceVO> priceList;
@ApiModelProperty(name = "档口服务承诺")
@ApiModelProperty(value = "档口服务承诺")
private StoreProdSvcVO svc;
@ApiModelProperty(name = "详情内容")
@ApiModelProperty(value = "详情内容")
private StoreProdDetailVO detail;
@ApiModelProperty(name = "档口商品生产工艺")
@ApiModelProperty(value = "档口商品生产工艺")
private StoreProdProcessVO process;
@Data
@ApiModel(value = "档口商品文件")
public static class StoreProdFileVO {
@ApiModelProperty(name = "文件名称")
@ApiModelProperty(value = "文件名称")
private String fileName;
@ApiModelProperty(name = "文件路径")
@ApiModelProperty(value = "文件路径")
private String fileUrl;
@ApiModelProperty(name = "文件大小")
@ApiModelProperty(value = "文件大小")
private BigDecimal fileSize;
@ApiModelProperty(name = "文件类型")
@ApiModelProperty(value = "文件类型")
private Integer fileType;
@ApiModelProperty(name = "排序")
@ApiModelProperty(value = "排序")
private Integer orderNum;
}
@Data
@ApiModel(value = "档口商品类目属性")
public static class StoreProdCateAttrVO {
@ApiModelProperty(name = "系统设置类目")
@ApiModelProperty(value = "系统设置类目")
private String dictType;
@ApiModelProperty(name = "系统设置类目值")
@ApiModelProperty(value = "系统设置类目值")
private String dictValue;
}
@Data
@ApiModel(value = "档口商品颜色尺码")
public static class StoreProdColorSizeVO {
@ApiModelProperty(name = "档口颜色ID")
@ApiModelProperty(value = "档口颜色ID")
private Long storeColorId;
@ApiModelProperty(name = "商品尺码")
@ApiModelProperty(value = "商品尺码")
private Integer size;
@ApiModelProperty(name = "是否是标准尺码")
@ApiModelProperty(value = "是否是标准尺码")
private Integer standard;
}
@Data
@ApiModel(value = "档口商品颜色价格")
public static class StoreProdColorPriceVO {
@ApiModelProperty(name = "档口商品颜色ID")
@ApiModelProperty(value = "档口商品颜色ID")
private Long storeColorId;
@ApiModelProperty(name = "档口商品定价")
@ApiModelProperty(value = "档口商品定价")
private BigDecimal price;
}
@Data
@ApiModel(value = "档口商品服务")
public static class StoreProdSvcVO {
@ApiModelProperty(name = "大小码及定制款可退")
@ApiModelProperty(value = "大小码及定制款可退")
private String customRefund;
@ApiModelProperty(name = "30天包退")
@ApiModelProperty(value = "30天包退")
private String thirtyDayRefund;
@ApiModelProperty(name = "一件起批")
@ApiModelProperty(value = "一件起批")
private String oneBatchSale;
@ApiModelProperty(name = "退款72小时到账")
@ApiModelProperty(value = "退款72小时到账")
private String refundWithinThreeDay;
}
@Data
@ApiModel(value = "档口商品详情")
public static class StoreProdDetailVO {
@ApiModelProperty(name = "详情内容")
@ApiModelProperty(value = "详情内容")
private String detail;
}
@Data
@ApiModel(value = "档口商品工艺")
public static class StoreProdProcessVO {
@ApiModelProperty(name = "鞋型")
@ApiModelProperty(value = "鞋型")
private String shoeType;
@ApiModelProperty(name = "楦号")
@ApiModelProperty(value = "楦号")
private String shoeSize;
@ApiModelProperty(name = "主皮")
@ApiModelProperty(value = "主皮")
private String mainSkin;
@ApiModelProperty(name = "主皮用量")
@ApiModelProperty(value = "主皮用量")
private String mainSkinUsage;
@ApiModelProperty(name = "配皮")
@ApiModelProperty(value = "配皮")
private String matchSkin;
@ApiModelProperty(name = "配皮用量")
@ApiModelProperty(value = "配皮用量")
private String matchSkinUsage;
@ApiModelProperty(name = "领口")
@ApiModelProperty(value = "领口")
private String neckline;
@ApiModelProperty(name = "膛底")
@ApiModelProperty(value = "膛底")
private String insole;
@ApiModelProperty(name = "扣件/拉头")
@ApiModelProperty(value = "扣件/拉头")
private String fastener;
@ApiModelProperty(name = "辅料")
@ApiModelProperty(value = "辅料")
private String shoeAccessories;
@ApiModelProperty(name = "包头")
@ApiModelProperty(value = "包头")
private String toeCap;
@ApiModelProperty(name = "包边")
@ApiModelProperty(value = "包边")
private String edgeBinding;
@ApiModelProperty(name = "中大底")
@ApiModelProperty(value = "中大底")
private String midOutsole;
@ApiModelProperty(name = "防水台")
@ApiModelProperty(value = "防水台")
private String platformSole;
@ApiModelProperty(name = "中底厂家编码")
@ApiModelProperty(value = "中底厂家编码")
private String midsoleFactoryCode;
@ApiModelProperty(name = "外底厂家编码")
@ApiModelProperty(value = "外底厂家编码")
private String outsoleFactoryCode;
@ApiModelProperty(name = "跟厂编码")
@ApiModelProperty(value = "跟厂编码")
private String heelFactoryCode;
@ApiModelProperty(name = "配料")
@ApiModelProperty(value = "配料")
private String components;
@ApiModelProperty(name = "第二底料")
@ApiModelProperty(value = "第二底料")
private String secondSoleMaterial;
@ApiModelProperty(name = "第二配料")
@ApiModelProperty(value = "第二配料")
private String secondUpperMaterial;
@ApiModelProperty(name = "自定义")
@ApiModelProperty(value = "自定义")
private String customAttr;
}

View File

@ -18,10 +18,10 @@ import java.util.List;
public class StoreProdStatusVO {
@NotNull(message = "档口商品ID不能为空!")
@ApiModelProperty("档口商品ID")
@ApiModelProperty(value = "档口商品ID", required = true)
private List<Long> storeProdIdList;
@NotBlank(message = "档口商品状态不能为空!")
@ApiModelProperty("档口商品状态")
@ApiModelProperty(value = "档口商品状态", required = true)
private Integer prodStatus;
}

View File

@ -25,198 +25,207 @@ import java.util.List;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class StoreProdVO {
@ApiModelProperty("档口商品名称")
@ApiModelProperty(value = "档口商品名称")
private String prodName;
@ApiModelProperty(name = "档口ID")
@ApiModelProperty(value = "档口ID", required = true)
@NotNull(message = "档口ID不能为空!")
private Long storeId;
@ApiModelProperty(name = "商品分类ID")
@ApiModelProperty(value = "商品分类ID", required = true)
@NotNull(message = "商品分类ID不能为空!")
private Long prodCateId;
@ApiModelProperty(name = "工厂货号")
@ApiModelProperty(value = "工厂货号")
@Size(max = 15, message = "工厂货号不能超过60个字!")
private String factoryArtNum;
@ApiModelProperty(name = "商品货号")
@ApiModelProperty(value = "商品货号", required = true)
@Size(max = 15, message = "商品货号不能超过60个字!")
@NotBlank(message = "商品货号不能为空!")
private String prodArtNum;
@ApiModelProperty(name = "商品标题")
@ApiModelProperty(value = "商品标题", required = true)
@Size(max = 60, message = "商品标题不能超过60个字!")
@NotBlank(message = "商品标题不能为空!")
private String prodTitle;
@ApiModelProperty(name = "商品重量")
@ApiModelProperty(value = "商品重量")
private BigDecimal prodWeight;
@ApiModelProperty(name = "生产价格")
@ApiModelProperty(value = "生产价格")
private Integer producePrice;
@ApiModelProperty(name = "大小码加价")
@ApiModelProperty(value = "大小码加价")
private Integer overPrice;
@ApiModelProperty(name = "发货时效")
@ApiModelProperty(value = "发货时效")
private Integer deliveryTime;
@ApiModelProperty(name = "上架方式")
@ApiModelProperty(value = "上架方式:1 立即上架 2 定时上架", required = true)
@NotBlank(message = "上架方式不能为空!")
private Integer listingWay;
@ApiModelProperty(name = "商品状态")
@ApiModelProperty(value = "商品状态1.未发布 2. 在售 3. 尾货 4.已下架 4. 已删除", required = true)
@NotBlank(message = "商品状态不能为空!")
private Integer prodStatus;
@ApiModelProperty(name = "定时发货时间(精确到小时)")
@ApiModelProperty(value = "定时发货时间(精确到小时)")
@JsonFormat(pattern = "yyyy-MM-dd HH")
private Date listingWaySchedule;
@ApiModelProperty(name = "档口文件列表")
@ApiModelProperty(value = "档口文件列表", required = true)
@NotNull(message = "档口文件不能为空!")
@Valid
private List<StoreProdFileVO> fileList;
@NotNull(message = "档口类目属性列表不能为空!")
@Valid
@ApiModelProperty(name = "档口类目属性列表")
@ApiModelProperty(value = "档口类目属性列表", required = true)
private List<StoreProdCateAttrVO> cateAttrList;
@NotNull(message = "档口所有颜色列表不能为空!")
@ApiModelProperty(name = "档口所有颜色列表")
@ApiModelProperty(value = "档口所有颜色列表", required = true)
private List<StoreColorVO> allColorList;
@NotNull(message = "商品颜色列表不能为空!")
@Valid
@ApiModelProperty(name = "商品颜色列表")
@ApiModelProperty(value = "商品颜色列表", required = true)
private List<StoreProdColorVO> colorList;
@NotNull(message = "档口尺码列表不能为空!")
@Valid
@ApiModelProperty(name = "档口尺码列表")
@ApiModelProperty(value = "档口尺码列表", required = true)
private List<StoreProdColorSizeVO> sizeList;
@NotNull(message = "档口颜色价格列表不能为空!")
@Valid
@ApiModelProperty(name = "档口颜色价格列表")
@ApiModelProperty(value = "档口颜色价格列表", required = true)
private List<StoreProdColorPriceVO> priceList;
@ApiModelProperty(name = "档口服务承诺")
@ApiModelProperty(value = "档口服务承诺")
private StoreProdSvcVO svc;
@NotNull(message = "详情内容不能为空!")
@Valid
@ApiModelProperty(name = "详情内容")
@ApiModelProperty(value = "详情内容", required = true)
private StoreProdDetailVO detail;
@ApiModelProperty(name = "档口生产工艺")
@ApiModelProperty(value = "档口生产工艺")
private StoreProdProcessVO process;
@Data
@ApiModel(value = "档口文件列表")
public static class StoreProdFileVO {
@NotBlank(message = "文件名称不能为空!")
@ApiModelProperty(name = "文件名称")
@ApiModelProperty(value = "文件名称", required = true)
private String fileName;
@NotBlank(message = "文件路径不能为空!")
@ApiModelProperty(name = "文件路径")
@ApiModelProperty(value = "文件路径", required = true)
private String fileUrl;
@NotNull(message = "文件大小不能为空!")
@ApiModelProperty(name = "文件大小")
@ApiModelProperty(value = "文件大小", required = true)
private BigDecimal fileSize;
@NotBlank(message = "文件类型不能为空!")
@ApiModelProperty(name = "文件类型")
@ApiModelProperty(value = "文件类型", required = true)
private Integer fileType;
@ApiModelProperty(name = "排序")
@ApiModelProperty(value = "排序", required = true)
@NotNull(message = "排序不能为空!")
private Integer orderNum;
}
@Data
@ApiModel(value = "档口类目属性列表")
public static class StoreProdCateAttrVO {
@ApiModelProperty(name = "系统设置类目")
@ApiModelProperty(value = "系统设置类目")
private String dictType;
@ApiModelProperty(name = "系统设置类目值")
@ApiModelProperty(value = "系统设置类目值")
private String dictValue;
}
@Data
@ApiModel(value = "商品颜色列表")
public static class StoreProdColorVO {
@NotNull(message = "档口颜色ID不能为空!")
@ApiModelProperty(name = "档口颜色ID")
@ApiModelProperty(value = "档口颜色ID", required = true)
private Long storeColorId;
@NotBlank(message = "颜色名称不能为空!")
@ApiModelProperty(name = "颜色名称")
@ApiModelProperty(value = "颜色名称", required = true)
private String colorName;
@NotNull(message = "排序不能为空!")
@ApiModelProperty(name = "排序")
@ApiModelProperty(value = "排序", required = true)
private Integer orderNum;
}
@Data
@ApiModel(value = "档口尺码列表")
public static class StoreProdColorSizeVO {
@NotNull(message = "档口颜色ID不能为空!")
@ApiModelProperty(name = "档口颜色ID")
@ApiModelProperty(value = "档口颜色ID", required = true)
private Long storeColorId;
@ApiModelProperty(name = "商品尺码")
@ApiModelProperty(value = "商品尺码", required = true)
@NotNull(message = "档口商品定价不能为空!")
private Integer size;
@NotBlank(message = "是否是标准尺码不能为空!")
@ApiModelProperty(name = "是否是标准尺码")
@ApiModelProperty(value = "是否是标准尺码", required = true)
private Integer standard;
}
@Data
@ApiModel(value = "档口颜色价格列表")
public static class StoreProdColorPriceVO {
@NotNull(message = "档口商品颜色ID不能为空!")
@ApiModelProperty(name = "档口商品颜色ID")
@ApiModelProperty(value = "档口商品颜色ID", required = true)
private Long storeColorId;
@NotNull(message = "档口商品定价不能为空!")
@ApiModelProperty(name = "档口商品定价")
@ApiModelProperty(value = "档口商品定价", required = true)
private BigDecimal price;
}
@Data
@ApiModel(value = "档口服务承诺")
public static class StoreProdSvcVO {
@ApiModelProperty(name = "大小码及定制款可退")
@ApiModelProperty(value = "大小码及定制款可退")
private String customRefund;
@ApiModelProperty(name = "30天包退")
@ApiModelProperty(value = "30天包退")
private String thirtyDayRefund;
@ApiModelProperty(name = "一件起批")
@ApiModelProperty(value = "一件起批")
private String oneBatchSale;
@ApiModelProperty(name = "退款72小时到账")
@ApiModelProperty(value = "退款72小时到账")
private String refundWithinThreeDay;
}
@Data
@ApiModel(value = "详情内容")
public static class StoreProdDetailVO {
@NotBlank(message = "详情内容不能为空!")
@ApiModelProperty(name = "详情内容")
@ApiModelProperty(value = "详情内容", required = true)
private String detail;
}
@Data
@ApiModel(value = "档口生产工艺")
public static class StoreProdProcessVO {
@ApiModelProperty(name = "鞋型")
@ApiModelProperty(value = "鞋型")
private String shoeType;
@ApiModelProperty(name = "楦号")
@ApiModelProperty(value = "楦号")
private String shoeSize;
@ApiModelProperty(name = "主皮")
@ApiModelProperty(value = "主皮")
private String mainSkin;
@ApiModelProperty(name = "主皮用量")
@ApiModelProperty(value = "主皮用量")
private String mainSkinUsage;
@ApiModelProperty(name = "配皮")
@ApiModelProperty(value = "配皮")
private String matchSkin;
@ApiModelProperty(name = "配皮用量")
@ApiModelProperty(value = "配皮用量")
private String matchSkinUsage;
@ApiModelProperty(name = "领口")
@ApiModelProperty(value = "领口")
private String neckline;
@ApiModelProperty(name = "膛底")
@ApiModelProperty(value = "膛底")
private String insole;
@ApiModelProperty(name = "扣件/拉头")
@ApiModelProperty(value = "扣件/拉头")
private String fastener;
@ApiModelProperty(name = "辅料")
@ApiModelProperty(value = "辅料")
private String shoeAccessories;
@ApiModelProperty(name = "包头")
@ApiModelProperty(value = "包头")
private String toeCap;
@ApiModelProperty(name = "包边")
@ApiModelProperty(value = "包边")
private String edgeBinding;
@ApiModelProperty(name = "中大底")
@ApiModelProperty(value = "中大底")
private String midOutsole;
@ApiModelProperty(name = "防水台")
@ApiModelProperty(value = "防水台")
private String platformSole;
@ApiModelProperty(name = "中底厂家编码")
@ApiModelProperty(value = "中底厂家编码")
private String midsoleFactoryCode;
@ApiModelProperty(name = "外底厂家编码")
@ApiModelProperty(value = "外底厂家编码")
private String outsoleFactoryCode;
@ApiModelProperty(name = "跟厂编码")
@ApiModelProperty(value = "跟厂编码")
private String heelFactoryCode;
@ApiModelProperty(name = "配料")
@ApiModelProperty(value = "配料")
private String components;
@ApiModelProperty(name = "第二底料")
@ApiModelProperty(value = "第二底料")
private String secondSoleMaterial;
@ApiModelProperty(name = "第二配料")
@ApiModelProperty(value = "第二配料")
private String secondUpperMaterial;
@ApiModelProperty(name = "自定义")
@ApiModelProperty(value = "自定义")
private String customAttr;
}

View File

@ -19,34 +19,36 @@ import java.util.List;
public class BarcodeMatchVO {
@NotNull(message = "档口商品ID不能为空")
@ApiModelProperty("档口商品ID")
@ApiModelProperty(value = "档口商品ID", required = true)
private Long storeProdId;
@ApiModelProperty("档口ID")
@ApiModelProperty(value = "档口ID", required = true)
@NotNull(message = "档口ID不能为空")
private Long storeId;
@ApiModelProperty("与第三方系统匹配规则")
@ApiModelProperty(value = "与第三方系统匹配规则", required = true)
@NotNull(message = "与第三方系统匹配规则不能为空")
@Valid
List<BarcodeMatchColorVO> colorList;
@Data
@ApiModel(value = "与第三方系统匹配规则")
public static class BarcodeMatchColorVO {
@NotNull(message = "颜色ID不能为空")
@ApiModelProperty("档口颜色ID")
@ApiModelProperty(value = "档口颜色ID", required = true)
private Long storeColorId;
@ApiModelProperty("颜色尺码ID列表")
@ApiModelProperty(value = "颜色尺码ID列表", required = true)
@NotNull(message = "颜色尺码ID列表不能为空")
@Valid
List<BarcodeMatchSizeVO> sizeList;
}
@Data
@ApiModel(value = "颜色尺码ID列表")
public static class BarcodeMatchSizeVO {
@NotNull(message = "尺码不能为空")
@ApiModelProperty("尺码")
@ApiModelProperty(value = "尺码", required = true)
private Integer size;
@NotBlank(message = "条码不能为空")
@ApiModelProperty("条码")
@ApiModelProperty(value = "条码", required = true)
private String barcode;
}

View File

@ -18,10 +18,10 @@ import javax.validation.constraints.NotNull;
@Data
public class StoreProdStockPageVO extends BasePageVO {
@ApiModelProperty(name = "档口ID")
@ApiModelProperty(value = "档口ID", required = true)
@NotNull(message = "档口ID不能为空")
private Long storeId;
@ApiModelProperty(name = "商品货号")
@ApiModelProperty(value = "商品货号")
private String prodArtNum;
}

View File

@ -15,47 +15,47 @@ import lombok.experimental.Accessors;
@Accessors(chain = true)
public class StoreProdStockResVO {
@ApiModelProperty(name = "档口商品库存ID")
@ApiModelProperty(value = "档口商品库存ID")
private Long storeProdStockId;
@ApiModelProperty(name = "档口商品ID")
@ApiModelProperty(value = "档口商品ID")
private Long storeProdId;
@ApiModelProperty(name = "档口商品主图url")
@ApiModelProperty(value = "档口商品主图url")
private String mainPicUrl;
@ApiModelProperty(name = "商品货号")
@ApiModelProperty(value = "商品货号")
private String prodArtNum;
@ApiModelProperty(name = "颜色名称")
@ApiModelProperty(value = "颜色名称")
private String colorName;
@ApiModelProperty(name = "分类类目")
@ApiModelProperty(value = "分类类目")
private String prodCateName;
@ApiModelProperty(name = "尺码30")
@ApiModelProperty(value = "尺码30")
private Integer size30;
@ApiModelProperty(name = "尺码31")
@ApiModelProperty(value = "尺码31")
private Integer size31;
@ApiModelProperty(name = "尺码32")
@ApiModelProperty(value = "尺码32")
private Integer size32;
@ApiModelProperty(name = "尺码33")
@ApiModelProperty(value = "尺码33")
private Integer size33;
@ApiModelProperty(name = "尺码34")
@ApiModelProperty(value = "尺码34")
private Integer size34;
@ApiModelProperty(name = "尺码35")
@ApiModelProperty(value = "尺码35")
private Integer size35;
@ApiModelProperty(name = "尺码36")
@ApiModelProperty(value = "尺码36")
private Integer size36;
@ApiModelProperty(name = "尺码37")
@ApiModelProperty(value = "尺码37")
private Integer size37;
@ApiModelProperty(name = "尺码38")
@ApiModelProperty(value = "尺码38")
private Integer size38;
@ApiModelProperty(name = "尺码39")
@ApiModelProperty(value = "尺码39")
private Integer size39;
@ApiModelProperty(name = "尺码40")
@ApiModelProperty(value = "尺码40")
private Integer size40;
@ApiModelProperty(name = "尺码41")
@ApiModelProperty(value = "尺码41")
private Integer size41;
@ApiModelProperty(name = "尺码42")
@ApiModelProperty(value = "尺码42")
private Integer size42;
@ApiModelProperty(name = "尺码43")
@ApiModelProperty(value = "尺码43")
private Integer size43;
@ApiModelProperty(name = "总数量")
@ApiModelProperty(value = "总数量")
private Integer totalStock;
}

View File

@ -15,37 +15,37 @@ import lombok.Data;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class StoreProdStockVO {
@ApiModelProperty(name = "档口商品库存ID")
@ApiModelProperty(value = "档口商品库存ID")
private Long storeProdStockId;
@ApiModelProperty(name = "颜色名称")
@ApiModelProperty(value = "颜色名称")
private String colorName;
@ApiModelProperty(name = "尺码30")
@ApiModelProperty(value = "尺码30")
private Integer size30;
@ApiModelProperty(name = "尺码31")
@ApiModelProperty(value = "尺码31")
private Integer size31;
@ApiModelProperty(name = "尺码32")
@ApiModelProperty(value = "尺码32")
private Integer size32;
@ApiModelProperty(name = "尺码33")
@ApiModelProperty(value = "尺码33")
private Integer size33;
@ApiModelProperty(name = "尺码34")
@ApiModelProperty(value = "尺码34")
private Integer size34;
@ApiModelProperty(name = "尺码35")
@ApiModelProperty(value = "尺码35")
private Integer size35;
@ApiModelProperty(name = "尺码36")
@ApiModelProperty(value = "尺码36")
private Integer size36;
@ApiModelProperty(name = "尺码37")
@ApiModelProperty(value = "尺码37")
private Integer size37;
@ApiModelProperty(name = "尺码38")
@ApiModelProperty(value = "尺码38")
private Integer size38;
@ApiModelProperty(name = "尺码39")
@ApiModelProperty(value = "尺码39")
private Integer size39;
@ApiModelProperty(name = "尺码40")
@ApiModelProperty(value = "尺码40")
private Integer size40;
@ApiModelProperty(name = "尺码41")
@ApiModelProperty(value = "尺码41")
private Integer size41;
@ApiModelProperty(name = "尺码42")
@ApiModelProperty(value = "尺码42")
private Integer size42;
@ApiModelProperty(name = "尺码43")
@ApiModelProperty(value = "尺码43")
private Integer size43;
}

View File

@ -20,17 +20,17 @@ import java.util.Date;
@Data
public class StoreProdStoragePageVO extends BasePageVO {
@ApiModelProperty(name = "档口ID")
@ApiModelProperty(value = "档口ID", required = true)
@NotNull(message = "档口ID不能为空!")
private Long storeId;
@ApiModelProperty(name = "商品货号")
@ApiModelProperty(value = "商品货号")
private String prodArtNum;
@ApiModelProperty(name = "入库类型")
@ApiModelProperty(value = "入库类型")
private Integer storageType;
@ApiModelProperty(name = "销售开始时间")
@ApiModelProperty(value = "销售开始时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date createTimeStart;
@ApiModelProperty(name = "销售结束时间")
@ApiModelProperty(value = "销售结束时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date createTimeEnd;

View File

@ -23,63 +23,63 @@ import java.util.List;
@Accessors(chain = true)
public class StoreProdStorageResVO {
@ApiModelProperty(name = "storeProdStorId")
@JsonProperty("storeProdStorId")
@ApiModelProperty(value = "storeProdStorageId")
@JsonProperty("storeProdStorageId")
private Long id;
@ApiModelProperty(name = "档口ID")
@ApiModelProperty(value = "档口ID")
private Long storeId;
@ApiModelProperty(name = "单据编号")
@ApiModelProperty(value = "单据编号")
private String code;
@ApiModelProperty(name = "入库类型")
@ApiModelProperty(value = "入库类型")
private Integer storageType;
@ApiModelProperty(name = "数量")
@ApiModelProperty(value = "数量")
private Integer quantity;
@ApiModelProperty(name = "生产成本金额")
@ApiModelProperty(value = "生产成本金额")
private BigDecimal produceAmount;
@ApiModelProperty(name = "操作人名称")
@ApiModelProperty(value = "操作人名称")
private String operatorName;
@ApiModelProperty(name = "创建时间")
@ApiModelProperty(value = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
@ApiModelProperty(name = "商品入库明细列表")
@ApiModelProperty(value = "商品入库明细列表")
private List<StorageDetailVO> detailList;
@Data
public static class StorageDetailVO {
@ApiModelProperty(name = "商品货号")
@ApiModelProperty(value = "商品货号")
private String prodArtNum;
@ApiModelProperty(name = "颜色名称")
@ApiModelProperty(value = "颜色名称")
private String colorName;
@ApiModelProperty(name = "尺码30")
@ApiModelProperty(value = "尺码30")
private Integer size30;
@ApiModelProperty(name = "尺码31")
@ApiModelProperty(value = "尺码31")
private Integer size31;
@ApiModelProperty(name = "尺码32")
@ApiModelProperty(value = "尺码32")
private Integer size32;
@ApiModelProperty(name = "尺码33")
@ApiModelProperty(value = "尺码33")
private Integer size33;
@ApiModelProperty(name = "尺码34")
@ApiModelProperty(value = "尺码34")
private Integer size34;
@ApiModelProperty(name = "尺码35")
@ApiModelProperty(value = "尺码35")
private Integer size35;
@ApiModelProperty(name = "尺码36")
@ApiModelProperty(value = "尺码36")
private Integer size36;
@ApiModelProperty(name = "尺码37")
@ApiModelProperty(value = "尺码37")
private Integer size37;
@ApiModelProperty(name = "尺码38")
@ApiModelProperty(value = "尺码38")
private Integer size38;
@ApiModelProperty(name = "尺码39")
@ApiModelProperty(value = "尺码39")
private Integer size39;
@ApiModelProperty(name = "尺码40")
@ApiModelProperty(value = "尺码40")
private Integer size40;
@ApiModelProperty(name = "尺码41")
@ApiModelProperty(value = "尺码41")
private Integer size41;
@ApiModelProperty(name = "尺码42")
@ApiModelProperty(value = "尺码42")
private Integer size42;
@ApiModelProperty(name = "尺码43")
@ApiModelProperty(value = "尺码43")
private Integer size43;
@ApiModelProperty(name = "总数量")
@ApiModelProperty(value = "总数量")
private Integer quantity;
}

View File

@ -6,10 +6,10 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.Valid;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Max;
import java.math.BigDecimal;
import java.util.List;
@ -23,93 +23,94 @@ import java.util.List;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class StoreProdStorageVO {
@ApiModelProperty(name = "档口ID")
@ApiModelProperty(value = "档口ID", required = true)
@NotNull(message = "档口ID不能为空!")
private Long storeId;
@NotBlank(message = "入库类型不能为空!")
@ApiModelProperty(name = "入库类型")
@ApiModelProperty(value = "入库类型", required = true)
private Integer storageType;
@Valid
@NotNull(message = "商品入库明细列表不能为空!")
@ApiModelProperty(name = "商品入库明细列表")
@ApiModelProperty(value = "商品入库明细列表", required = true)
private List<StorageDetailVO> detailList;
@Data
@ApiModel(value = "商品入库明细列表")
public static class StorageDetailVO {
@NotBlank(message = "商品货号不能为空!")
@ApiModelProperty(name = "商品货号")
@ApiModelProperty(value = "商品货号", required = true)
private String prodArtNum;
@NotNull(message = "档口商品颜色ID不能为空!")
@ApiModelProperty(name = "档口商品颜色ID")
@ApiModelProperty(value = "档口商品颜色ID", required = true)
private Long storeProdColorId;
@NotBlank(message = "颜色名称不能为空!")
@ApiModelProperty(name = "颜色名称")
@ApiModelProperty(value = "颜色名称", required = true)
private String colorName;
@NotNull(message = "档口商品ID不能为空!")
@ApiModelProperty(name = "档口商品ID")
@ApiModelProperty(value = "档口商品ID", required = true)
private Long storeProdId;
@Min(value = 0, message = "商品数量不能小于0双!")
@Max(value = 9999, message = "商品数量不能超过9999双!")
@ApiModelProperty(name = "尺码30")
@ApiModelProperty(value = "尺码30")
private Integer size30;
@Min(value = 0, message = "商品数量不能小于0双!")
@Max(value = 9999, message = "商品数量不能超过9999双!")
@ApiModelProperty(name = "尺码31")
@ApiModelProperty(value = "尺码31")
private Integer size31;
@Min(value = 0, message = "商品数量不能小于0双!")
@Max(value = 9999, message = "商品数量不能超过9999双!")
@ApiModelProperty(name = "尺码32")
@ApiModelProperty(value = "尺码32")
private Integer size32;
@Min(value = 0, message = "商品数量不能小于0双!")
@Max(value = 9999, message = "商品数量不能超过9999双!")
@ApiModelProperty(name = "尺码33")
@ApiModelProperty(value = "尺码33")
private Integer size33;
@Min(value = 0, message = "商品数量不能小于0双!")
@Max(value = 9999, message = "商品数量不能超过9999双!")
@ApiModelProperty(name = "尺码34")
@ApiModelProperty(value = "尺码34")
private Integer size34;
@Min(value = 0, message = "商品数量不能小于0双!")
@Max(value = 9999, message = "商品数量不能超过9999双!")
@ApiModelProperty(name = "尺码35")
@ApiModelProperty(value = "尺码35")
private Integer size35;
@Min(value = 0, message = "商品数量不能小于0双!")
@Max(value = 9999, message = "商品数量不能超过9999双!")
@ApiModelProperty(name = "尺码36")
@ApiModelProperty(value = "尺码36")
private Integer size36;
@Min(value = 0, message = "商品数量不能小于0双!")
@Max(value = 9999, message = "商品数量不能超过9999双!")
@ApiModelProperty(name = "尺码37")
@ApiModelProperty(value = "尺码37")
private Integer size37;
@Min(value = 0, message = "商品数量不能小于0双!")
@Max(value = 9999, message = "商品数量不能超过9999双!")
@ApiModelProperty(name = "尺码38")
@ApiModelProperty(value = "尺码38")
private Integer size38;
@Min(value = 0, message = "商品数量不能小于0双!")
@Max(value = 9999, message = "商品数量不能超过9999双!")
@ApiModelProperty(name = "尺码39")
@ApiModelProperty(value = "尺码39")
private Integer size39;
@Min(value = 0, message = "商品数量不能小于0双!")
@Max(value = 9999, message = "商品数量不能超过9999双!")
@ApiModelProperty(name = "尺码40")
@ApiModelProperty(value = "尺码40")
private Integer size40;
@Min(value = 0, message = "商品数量不能小于0双!")
@Max(value = 9999, message = "商品数量不能超过9999双!")
@ApiModelProperty(name = "尺码41")
@ApiModelProperty(value = "尺码41")
private Integer size41;
@Min(value = 0, message = "商品数量不能小于0双!")
@Max(value = 9999, message = "商品数量不能超过9999双!")
@ApiModelProperty(name = "尺码42")
@ApiModelProperty(value = "尺码42")
private Integer size42;
@Min(value = 0, message = "商品数量不能小于0双!")
@Max(value = 9999, message = "商品数量不能超过9999双!")
@ApiModelProperty(name = "尺码43")
@ApiModelProperty(value = "尺码43")
private Integer size43;
@ApiModelProperty(name = "总数量")
@ApiModelProperty(value = "总数量")
private Integer quantity;
@ApiModelProperty(name = "生产价格")
@ApiModelProperty(value = "生产价格")
private BigDecimal producePrice;
@ApiModelProperty(name = "总的生产价格")
@ApiModelProperty(value = "总的生产价格")
private BigDecimal produceAmount;
}

View File

@ -18,60 +18,60 @@ import java.util.Date;
@Accessors(chain = true)
public class StoreProdDemandPageResVO {
@ApiModelProperty(name = "storeProdDemandId")
@ApiModelProperty(value = "storeProdDemandId")
private Long storeProdDemandId;
@ApiModelProperty(name = "storeProdDemandDetailId")
@ApiModelProperty(value = "storeProdDemandDetailId")
private Long storeProdDemandDetailId;
@ApiModelProperty(name = "档口ID")
@ApiModelProperty(value = "档口ID")
private Long storeId;
@ApiModelProperty(name = "档口工厂名称")
@ApiModelProperty(value = "档口工厂名称")
private String storeFactoryName;
@ApiModelProperty(name = "创建时间")
@ApiModelProperty(value = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
@ApiModelProperty(name = "编号")
@ApiModelProperty(value = "编号")
private String code;
@ApiModelProperty(name = "货号")
@ApiModelProperty(value = "货号")
private String prodArtNum;
@ApiModelProperty(name = "颜色")
@ApiModelProperty(value = "颜色")
private String colorName;
@ApiModelProperty(name = "生产状态")
@ApiModelProperty(value = "生产状态")
private String detailStatus;
@ApiModelProperty(name = "紧急单还是正常单")
@ApiModelProperty(value = "紧急单还是正常单")
private Integer emergency;
@ApiModelProperty(name = "计划生产数量")
@ApiModelProperty(value = "计划生产数量")
private Integer quantity;
@ApiModelProperty(name = "入库数量")
@ApiModelProperty(value = "入库数量")
private Integer storageQuantity;
@ApiModelProperty(name = "生产中数量")
@ApiModelProperty(value = "生产中数量")
private Integer inProdQuantity;
@ApiModelProperty(name = "尺码30")
@ApiModelProperty(value = "尺码30")
private Integer size30;
@ApiModelProperty(name = "尺码31")
@ApiModelProperty(value = "尺码31")
private Integer size31;
@ApiModelProperty(name = "尺码32")
@ApiModelProperty(value = "尺码32")
private Integer size32;
@ApiModelProperty(name = "尺码33")
@ApiModelProperty(value = "尺码33")
private Integer size33;
@ApiModelProperty(name = "尺码34")
@ApiModelProperty(value = "尺码34")
private Integer size34;
@ApiModelProperty(name = "尺码35")
@ApiModelProperty(value = "尺码35")
private Integer size35;
@ApiModelProperty(name = "尺码36")
@ApiModelProperty(value = "尺码36")
private Integer size36;
@ApiModelProperty(name = "尺码37")
@ApiModelProperty(value = "尺码37")
private Integer size37;
@ApiModelProperty(name = "尺码38")
@ApiModelProperty(value = "尺码38")
private Integer size38;
@ApiModelProperty(name = "尺码39")
@ApiModelProperty(value = "尺码39")
private Integer size39;
@ApiModelProperty(name = "尺码40")
@ApiModelProperty(value = "尺码40")
private Integer size40;
@ApiModelProperty(name = "尺码41")
@ApiModelProperty(value = "尺码41")
private Integer size41;
@ApiModelProperty(name = "尺码42")
@ApiModelProperty(value = "尺码42")
private Integer size42;
@ApiModelProperty(name = "尺码43")
@ApiModelProperty(value = "尺码43")
private Integer size43;
}

View File

@ -18,16 +18,18 @@ import javax.validation.constraints.NotNull;
@Data
public class StoreProdDemandPageVO extends BasePageVO {
@ApiModelProperty(name = "档口ID")
@ApiModelProperty(value = "档口ID", required = true)
@NotNull(message = "档口ID不能为空")
private Long storeId;
@ApiModelProperty(name = "档口工厂ID")
@ApiModelProperty(value = "需求状态:1 待生产 2 生产中 3 生产完成")
private Integer demandStatus;
@ApiModelProperty(value = "档口工厂ID")
private Long storeFactoryId;
@ApiModelProperty(name = "商品货号")
@ApiModelProperty(value = "商品货号")
private String prodArtNum;
@ApiModelProperty(name = "备注")
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(name = "是否紧急单", notes = "0=正常,1=紧急")
@ApiModelProperty(value = "是否紧急单", notes = "0=正常,1=紧急")
private Integer emergency;
}

View File

@ -4,7 +4,6 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import java.util.List;
@ -18,47 +17,47 @@ import java.util.List;
@Builder
public class StoreProdDemandQuantityVO {
@ApiModelProperty(name = "货号")
@ApiModelProperty(value = "货号")
private Long storeId;
@ApiModelProperty(name = "档口商品ID")
@ApiModelProperty(value = "档口商品ID")
private Long storeProdId;
@ApiModelProperty(name = "档口商品颜色ID")
@ApiModelProperty(value = "档口商品颜色ID")
private Long storeProdColorId;
@ApiModelProperty(name = "货号")
@ApiModelProperty(value = "货号")
private String prodArtNum;
@ApiModelProperty(name = "颜色")
@ApiModelProperty(value = "颜色")
private String colorName;
@ApiModelProperty(name = "今天是否提交过需求申请")
@ApiModelProperty(value = "今天是否提交过需求申请")
private Boolean todaySubmitted;
@ApiModelProperty(name = "数量对比列")
@ApiModelProperty(value = "数量对比列")
private List<String> compareStrList;
@ApiModelProperty(name = "尺码为30的数量")
@ApiModelProperty(value = "尺码为30的数量")
private List<String> size30List;
@ApiModelProperty(name = "尺码为31的数量")
@ApiModelProperty(value = "尺码为31的数量")
private List<String> size31List;
@ApiModelProperty(name = "尺码为32的数量")
@ApiModelProperty(value = "尺码为32的数量")
private List<String> size32List;
@ApiModelProperty(name = "尺码为33的数量")
@ApiModelProperty(value = "尺码为33的数量")
private List<String> size33List;
@ApiModelProperty(name = "尺码为34的数量")
@ApiModelProperty(value = "尺码为34的数量")
private List<String> size34List;
@ApiModelProperty(name = "尺码为35的数量")
@ApiModelProperty(value = "尺码为35的数量")
private List<String> size35List;
@ApiModelProperty(name = "尺码为36的数量")
@ApiModelProperty(value = "尺码为36的数量")
private List<String> size36List;
@ApiModelProperty(name = "尺码为37的数量")
@ApiModelProperty(value = "尺码为37的数量")
private List<String> size37List;
@ApiModelProperty(name = "尺码为38的数量")
@ApiModelProperty(value = "尺码为38的数量")
private List<String> size38List;
@ApiModelProperty(name = "尺码为39的数量")
@ApiModelProperty(value = "尺码为39的数量")
private List<String> size39List;
@ApiModelProperty(name = "尺码为40的数量")
@ApiModelProperty(value = "尺码为40的数量")
private List<String> size40List;
@ApiModelProperty(name = "尺码为41的数量")
@ApiModelProperty(value = "尺码为41的数量")
private List<String> size41List;
@ApiModelProperty(name = "尺码为42的数量")
@ApiModelProperty(value = "尺码为42的数量")
private List<String> size42List;
@ApiModelProperty(name = "尺码为43的数量")
@ApiModelProperty(value = "尺码为43的数量")
private List<String> size43List;
}

View File

@ -2,14 +2,10 @@ package com.ruoyi.web.controller.xkt.vo.storeProductDemand;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;
/**
@ -22,61 +18,62 @@ import java.util.List;
public class StoreProdDemandVO {
@NotNull(message = "档口ID不能为空")
@ApiModelProperty(name = "档口ID")
@ApiModelProperty(value = "档口ID", required = true)
private Long storeId;
@NotNull(message = "档口工厂ID不能为空")
@ApiModelProperty(name = "档口工厂ID")
@ApiModelProperty(value = "档口工厂ID", required = true)
private Long storeFactoryId;
@NotNull(message = "需求列表不能为空")
@ApiModelProperty(name = "需求列表")
@ApiModelProperty(value = "需求列表", required = true)
private List<DetailVO> detailList;
@Data
@ApiModel(value = "需求列表")
public static class DetailVO {
@NotNull(message = "档口商品ID不能为空")
@ApiModelProperty(name = "档口商品ID")
@ApiModelProperty(value = "档口商品ID", required = true)
private Long storeProdId;
@NotNull(message = "档口商品颜色ID不能为空")
@ApiModelProperty(name = "档口商品颜色ID")
@ApiModelProperty(value = "档口商品颜色ID", required = true)
private Long storeProdColorId;
@NotBlank(message = "货号不能为空")
@ApiModelProperty(name = "货号")
@ApiModelProperty(value = "货号", required = true)
private String prodArtNum;
@NotBlank(message = "颜色不能为空")
@ApiModelProperty(name = "颜色")
@ApiModelProperty(value = "颜色", required = true)
private String colorName;
@NotBlank(message = "是否紧急单不能为空")
@ApiModelProperty(name = "是否紧急单", notes = "2=正常,1=紧急")
@ApiModelProperty(value = "是否紧急单2=正常,1=紧急", required = true)
private Integer emergency;
@ApiModelProperty(name = "总的数量")
@ApiModelProperty(value = "总的数量")
private Integer quantity;
@ApiModelProperty(name = "尺码30")
@ApiModelProperty(value = "尺码30")
private Integer size30;
@ApiModelProperty(name = "尺码31")
@ApiModelProperty(value = "尺码31")
private Integer size31;
@ApiModelProperty(name = "尺码32")
@ApiModelProperty(value = "尺码32")
private Integer size32;
@ApiModelProperty(name = "尺码33")
@ApiModelProperty(value = "尺码33")
private Integer size33;
@ApiModelProperty(name = "尺码34")
@ApiModelProperty(value = "尺码34")
private Integer size34;
@ApiModelProperty(name = "尺码35")
@ApiModelProperty(value = "尺码35")
private Integer size35;
@ApiModelProperty(name = "尺码36")
@ApiModelProperty(value = "尺码36")
private Integer size36;
@ApiModelProperty(name = "尺码37")
@ApiModelProperty(value = "尺码37")
private Integer size37;
@ApiModelProperty(name = "尺码38")
@ApiModelProperty(value = "尺码38")
private Integer size38;
@ApiModelProperty(name = "尺码39")
@ApiModelProperty(value = "尺码39")
private Integer size39;
@ApiModelProperty(name = "尺码40")
@ApiModelProperty(value = "尺码40")
private Integer size40;
@ApiModelProperty(name = "尺码41")
@ApiModelProperty(value = "尺码41")
private Integer size41;
@ApiModelProperty(name = "尺码42")
@ApiModelProperty(value = "尺码42")
private Integer size42;
@ApiModelProperty(name = "尺码43")
@ApiModelProperty(value = "尺码43")
private Integer size43;
}

View File

@ -0,0 +1,29 @@
package com.ruoyi.web.controller.xkt.vo.storeProductDemand;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @author liujiang
* @version v1.0
* @date 2025/3/27 15:12
*/
@ApiModel("档口需求安排生产")
@Data
public class StoreProdDemandWorkingVO {
@ApiModelProperty(value = "档口ID", required = true)
@NotNull(message = "档口ID不能为空")
private Long storeId;
@NotNull(message = "档口需求明细ID不能为空")
@ApiModelProperty(value = "档口需求明细ID", required = true)
private List<Long> storeProdDemandDetailIdList;
@NotNull(message = "是否导出生产单不能为空")
@ApiModelProperty(value = "是否导出生产单", required = true)
private Boolean download;
}

View File

@ -15,11 +15,11 @@ import lombok.Data;
@Builder
public class StoreProdFilePicSpaceResVO {
@ApiModelProperty(name = "档口商品ID")
@ApiModelProperty(value = "档口商品ID")
private Long storeProdId;
@ApiModelProperty(name = "商品货号")
@ApiModelProperty(value = "商品货号")
private String prodArtNum;
@ApiModelProperty(name = "文件路径")
@ApiModelProperty(value = "文件路径")
private String fileUrl;
}

View File

@ -21,27 +21,28 @@ import java.util.List;
@AllArgsConstructor
public class StoreQuickFuncVO {
@ApiModelProperty(name = "档口ID")
@ApiModelProperty(value = "档口ID", required = true)
@NotNull(message = "档口ID不能为空!")
private Long storeId;
@ApiModelProperty(name = "档口勾选的快捷功能")
@ApiModelProperty(value = "档口勾选的快捷功能", required = true)
@NotNull(message = "档口勾选的快捷功能不能为空!")
private List<QuickFuncDetailVO> checkedList;
@ApiModelProperty(name = "系统所有的二级菜单列表")
@ApiModelProperty(value = "系统所有的二级菜单列表")
private List<QuickFuncDetailVO> menuList;
@Data
@ApiModel(value = "快捷功能菜单")
@RequiredArgsConstructor
public static class QuickFuncDetailVO {
@ApiModelProperty(name = "菜单名称")
@ApiModelProperty(value = "菜单名称")
private String menuName;
@ApiModelProperty(name = "显示顺序")
@ApiModelProperty(value = "显示顺序")
private Integer orderNum;
@ApiModelProperty(name = "路由地址")
@ApiModelProperty(value = "路由地址")
private String path;
@ApiModelProperty(name = "组件路径")
@ApiModelProperty(value = "组件路径")
private String component;
@ApiModelProperty(name = "菜单图标")
@ApiModelProperty(value = "菜单图标")
private String icon;
}

View File

@ -21,22 +21,22 @@ import java.util.Date;
public class StoreSalePageVO extends BasePageVO {
@NotNull(message = "档口ID不能为空")
@ApiModelProperty(name = "档口ID")
@ApiModelProperty(value = "档口ID", required = true)
private Long storeId;
@ApiModelProperty(name = "商品货号")
@ApiModelProperty(value = "商品货号")
private String prodArtNum;
@ApiModelProperty(name = "客户名称")
@ApiModelProperty(value = "客户名称")
private String cusName;
@ApiModelProperty(name = "销售类型", notes = "销售、退货、销售/退货 1 2 3")
@ApiModelProperty(value = "销售类型", notes = "销售、退货、销售/退货 1 2 3")
private Integer saleType;
@ApiModelProperty(name = "结款状态")
@ApiModelProperty(value = "结款状态")
private Integer paymentStatus;
@ApiModelProperty(name = "支付方式")
@ApiModelProperty(value = "支付方式")
private Integer payWay;
@ApiModelProperty(name = "销售开始时间")
@ApiModelProperty(value = "销售开始时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date createTimeStart;
@ApiModelProperty(name = "销售结束时间")
@ApiModelProperty(value = "销售结束时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date createTimeEnd;

View File

@ -18,7 +18,7 @@ import java.util.List;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class StoreSalePayStatusVO {
@ApiModelProperty(name = "结算的storeSaleId列表")
@ApiModelProperty(value = "结算的storeSaleId列表", required = true)
@NotNull(message = "结算的storeSaleId列表不能为空!")
private List<Long> storeSaleIdList;

View File

@ -22,62 +22,62 @@ import java.util.List;
public class StoreSaleVO {
@NotNull(message = "是否为返单不能为空!")
@ApiModelProperty(name = "是否为返单", notes = "true 是返单 false 不是返单")
@ApiModelProperty(value = "是否为返单:true 是返单 false 不是返单", required = true)
private Boolean refund;
@ApiModelProperty(name = "storeSaleId", notes = "新增为空,编辑必传")
@ApiModelProperty(value = "storeSaleId", notes = "新增为空,编辑必传")
private Long storeSaleId;
@ApiModelProperty(name = "档口ID")
@ApiModelProperty(value = "档口ID", required = true)
@NotNull(message = "档口ID不能为空!")
private Long storeId;
@ApiModelProperty(name = "档口客户ID")
@ApiModelProperty(value = "档口客户ID", required = true)
@NotNull(message = "档口客户ID不能为空!")
private Long storeCusId;
@ApiModelProperty(name = "档口客户名称")
@ApiModelProperty(value = "档口客户名称", required = true)
@NotBlank(message = "档口客户名称不能为空!")
private String storeCusName;
@ApiModelProperty(name = "销售类型(销售 1、退货 2、销售/退货 3")
@ApiModelProperty(value = "销售类型(销售 1、退货 2、销售/退货 3", required = true)
@NotBlank(message = "销售类型不能为空!")
private Integer saleType;
@NotBlank(message = "支付方式不能为空!")
@ApiModelProperty(name = "支付方式支付宝、微信、现金、欠款ALIPAY WECHAT_PAY CASH DEBT")
@ApiModelProperty(value = "支付方式1支付宝、2微信、3现金、4欠款", required = true)
private Integer payWay;
@ApiModelProperty(name = "结款状态(已结清、欠款) SETTLED、DEBT")
@ApiModelProperty(value = "结款状态(已结清、欠款) SETTLED、DEBT")
private Integer paymentStatus;
@NotNull(message = "销售详情列表不能为空!")
@Valid
@ApiModelProperty(name = "销售详情列表")
@ApiModelProperty(value = "销售详情列表", required = true)
private List<SaleDetailVO> detailList;
@Data
@ApiModel(value = "销售详情列表")
public static class SaleDetailVO {
@NotNull(message = "档口商品ID不能为空!")
@ApiModelProperty(name = "档口商品ID")
@ApiModelProperty(value = "档口商品ID", required = true)
private Long storeProdId;
@NotNull(message = "档口商品颜色尺码ID不能为空!")
@ApiModelProperty(name = "档口商品颜色尺码ID")
@ApiModelProperty(value = "档口商品颜色尺码ID", required = true)
private Long storeProdColorId;
@ApiModelProperty(name = "颜色")
@ApiModelProperty(value = "颜色")
private String colorName;
@ApiModelProperty(name = "尺码")
@ApiModelProperty(value = "尺码")
private Integer size;
@ApiModelProperty(name = "商品货号")
@ApiModelProperty(value = "商品货号", required = true)
@NotBlank(message = "商品货号不能为空!")
private String prodArtNum;
@ApiModelProperty(name = "销售条码")
@ApiModelProperty(value = "销售条码")
private String sns;
@NotNull(message = "销售单价不能为空!")
@ApiModelProperty(name = "销售单价")
@ApiModelProperty(value = "销售单价", required = true)
private BigDecimal price;
@ApiModelProperty(name = "给客户优惠后单价")
@ApiModelProperty(value = "给客户优惠后单价")
private BigDecimal discountedPrice;
@ApiModelProperty(name = "数量")
@ApiModelProperty(value = "数量", required = true)
@NotNull(message = "数量不能为空!")
private Integer quantity;
@NotNull(message = "总金额不能为空!")
@ApiModelProperty(name = "总金额")
@ApiModelProperty(value = "总金额", required = true)
private BigDecimal amount;
@ApiModelProperty(name = "其它优惠")
@ApiModelProperty(value = "其它优惠")
private BigDecimal otherDiscount;
}

View File

@ -23,17 +23,17 @@ public class StoreSaleRefundRecordVO {
@ApiModelProperty("返单ID")
private Long storeSaleRefundRecordId;
@ApiModelProperty(name = "单据编号")
@ApiModelProperty(value = "单据编号")
private String code;
@ApiModelProperty(name = "档口销售客户名称")
@ApiModelProperty(value = "档口销售客户名称")
private String storeCusName;
@JsonFormat(pattern = "HH:mm", timezone = "GMT+8")
private Date createTime;
@ApiModelProperty(name = "支付方式支付宝、微信、现金、欠款ALIPAY WECHAT_PAY CASH DEBT")
@ApiModelProperty(value = "支付方式支付宝、微信、现金、欠款ALIPAY WECHAT_PAY CASH DEBT")
private Integer payWay;
@ApiModelProperty(name = "数量")
@ApiModelProperty(value = "数量")
private Integer quantity;
@ApiModelProperty(name = "总金额")
@ApiModelProperty(value = "总金额")
private BigDecimal amount;
}

View File

@ -1,11 +1,11 @@
package com.ruoyi.xkt.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.XktBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
@ -17,7 +17,9 @@ import org.apache.commons.lang3.builder.ToStringStyle;
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)
public class StoreProductStorageDemandDeduct extends XktBaseEntity {
private static final long serialVersionUID = 1L;
/**
@ -44,12 +46,6 @@ public class StoreProductStorageDemandDeduct extends XktBaseEntity {
@Excel(name = "档口商品颜色ID")
private Long storeProdColorId;
/**
* ID
*/
@Excel(name = "档口商品ID")
private Long storeProdId;
/**
* code
*/
@ -68,90 +64,9 @@ public class StoreProductStorageDemandDeduct extends XktBaseEntity {
private Integer quantity;
/**
* 30
*
*/
@Excel(name = "尺码30")
@TableField("size_30")
private Integer size30;
/**
* 31
*/
@Excel(name = "尺码31")
@TableField("size_31")
private Integer size31;
/**
* 32
*/
@Excel(name = "尺码32")
@TableField("size_32")
private Integer size32;
/**
* 33
*/
@Excel(name = "尺码33")
@TableField("size_33")
private Integer size33;
/**
* 34
*/
@Excel(name = "尺码34")
@TableField("size_34")
private Integer size34;
/**
* 35
*/
@Excel(name = "尺码35")
@TableField("size_35")
private Integer size35;
/**
* 36
*/
@Excel(name = "尺码36")
@TableField("size_36")
private Integer size36;
/**
* 37
*/
@Excel(name = "尺码37")
@TableField("size_37")
private Integer size37;
/**
* 38
*/
@Excel(name = "尺码38")
@TableField("size_38")
private Integer size38;
/**
* 39
*/
@Excel(name = "尺码39")
@TableField("size_39")
private Integer size39;
/**
* 40
*/
@Excel(name = "尺码40")
@TableField("size_40")
private Integer size40;
/**
* 41
*/
@Excel(name = "尺码41")
@TableField("size_41")
private Integer size41;
/**
* 42
*/
@Excel(name = "尺码42")
@TableField("size_42")
private Integer size42;
/**
* 43
*/
@Excel(name = "尺码43")
@TableField("size_43")
private Integer size43;
private Integer size;
/**
*
@ -166,23 +81,9 @@ public class StoreProductStorageDemandDeduct extends XktBaseEntity {
.append("storeProdStorDetailId", getStoreProdStorageDetailId())
.append("storeProdDemandId", getStoreProdDemandDetailId())
.append("storeProdColorId", getStoreProdColorId())
.append("storeProdId", getStoreProdId())
.append("storageCode", getStorageCode())
.append("demandCode", getDemandCode())
.append("size30", getSize30())
.append("size31", getSize31())
.append("size32", getSize32())
.append("size33", getSize33())
.append("size34", getSize34())
.append("size35", getSize35())
.append("size36", getSize36())
.append("size37", getSize37())
.append("size38", getSize38())
.append("size39", getSize39())
.append("size40", getSize40())
.append("size41", getSize41())
.append("size42", getSize42())
.append("size43", getSize43())
.append("size", getSize())
.append("version", getVersion())
.append("delFlag", getDelFlag())
.append("createBy", getCreateBy())

View File

@ -1,95 +0,0 @@
package com.ruoyi.xkt.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.XktBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* store_product_storage_demand_deducte
*
* @author ruoyi
* @date 2025-03-26
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)
public class StoreProductStorageDemandDeductNew extends XktBaseEntity {
private static final long serialVersionUID = 1L;
/**
* ID
*/
@TableId
private Long id;
/**
* ID
*/
@Excel(name = "档口商品入库明细ID")
private Long storeProdStorageDetailId;
/**
* ID
*/
@Excel(name = "档口商品需求明细ID")
private Long storeProdDemandDetailId;
/**
* ID
*/
@Excel(name = "档口商品颜色ID")
private Long storeProdColorId;
/**
* code
*/
@Excel(name = "入库code")
private String storageCode;
/**
* code
*/
@Excel(name = "需求code")
private String demandCode;
/**
*
*/
private Integer quantity;
/**
*
*/
private Integer size;
/**
*
*/
private String remark;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("storeProdStorDetailId", getStoreProdStorageDetailId())
.append("storeProdDemandId", getStoreProdDemandDetailId())
.append("storeProdColorId", getStoreProdColorId())
.append("storageCode", getStorageCode())
.append("demandCode", getDemandCode())
.append("size", getSize())
.append("version", getVersion())
.append("delFlag", getDelFlag())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.toString();
}
}

View File

@ -71,11 +71,6 @@ public class StoreProductStorageDetail extends XktBaseEntity {
@Excel(name = "总的生产价格")
private BigDecimal produceAmount;
/**
* 0. 1. 2.
*/
private Integer deductStatus;
/**
* 30
*/

View File

@ -3,6 +3,7 @@ package com.ruoyi.xkt.dto.storeColor;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* @author liujiang
@ -11,6 +12,7 @@ import lombok.Data;
*/
@ApiModel("档口所有颜色")
@Data
@Accessors(chain = true)
public class StoreColorDTO {
@ApiModelProperty(name = "档口颜色ID")

View File

@ -17,8 +17,8 @@ import java.util.Date;
@Data
public class StoreProdStoragePageResDTO {
@ApiModelProperty(name = "storeProdStorId")
private Long storeProdStorId;
@ApiModelProperty(name = "storeProdStorageId")
private Long storeProdStorageId;
@ApiModelProperty(name = "档口ID")
private Long storeId;
@ApiModelProperty(name = "单据编号")

View File

@ -23,8 +23,7 @@ import java.util.List;
@Accessors(chain = true)
public class StoreProdStorageResDTO {
@ApiModelProperty(name = "storeProdStorId")
@JsonProperty("storeProdStorId")
@ApiModelProperty(name = "storeProdStorageId")
private Long id;
@ApiModelProperty(name = "档口ID")
private Long storeId;

View File

@ -6,6 +6,8 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
/**
* @author liujiang
* @version v1.0
@ -22,5 +24,7 @@ public class StoreProdPageDTO extends BasePageDTO {
private Long prodCateId;
@ApiModelProperty(name = "档口ID")
private Long storeId;
@ApiModelProperty(name = "商品状态")
private Integer prodStatus;
}

View File

@ -20,28 +20,28 @@ import java.util.List;
@Accessors(chain = true)
public class StoreProdPageResDTO {
@ApiModelProperty(name = "档口商品ID")
@ApiModelProperty(name = "档口商品ID", value = "档口商品ID")
private Long storeProdId;
@ApiModelProperty(name = "档口ID")
@ApiModelProperty(name = "档口ID", value = "档口ID")
private Long storeId;
@ApiModelProperty(name = "档口商品主图url")
@ApiModelProperty(name = "档口商品主图url", value = "档口商品主图url")
private String mainPicUrl;
@ApiModelProperty(name = "商品货号")
@ApiModelProperty(name = "商品货号", value = "商品货号")
private String prodArtNum;
@ApiModelProperty(name = "颜色")
@ApiModelProperty(name = "颜色", value = "颜色")
private String colorName;
private Long prodCateId;
@ApiModelProperty(name = "分类类目")
@ApiModelProperty(name = "分类类目", value = "分类类目")
private String prodCateName;
@ApiModelProperty(name = "标准尺码")
@ApiModelProperty(name = "标准尺码", value = "标准尺码")
private List<Integer> standardSizeList;
@ApiModelProperty(name = "销售金额(元)")
@ApiModelProperty(name = "销售金额(元)", value = "销售金额(元)")
private BigDecimal price;
@ApiModelProperty(name = "状态")
@ApiModelProperty(name = "状态", value = "状态:1未发布2在售3尾货4已下架5已删除")
private Integer prodStatus;
@ApiModelProperty(name = "创建时间")
@ApiModelProperty(name = "创建时间", value = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;

View File

@ -21,6 +21,8 @@ public class StoreProdDemandPageDTO extends BasePageDTO {
@ApiModelProperty(name = "档口ID")
@NotNull(message = "档口ID不能为空")
private Long storeId;
@ApiModelProperty(name = "需求状态" ,notes = "1 待生产 2 生产中 3 生产完成")
private Integer demandStatus;
@ApiModelProperty(name = "档口工厂ID")
private Long storeFactoryId;
@ApiModelProperty(name = "商品货号")

View File

@ -0,0 +1,25 @@
package com.ruoyi.xkt.dto.storeProductDemand;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author liujiang
* @version v1.0
* @date 2025/3/27 15:12
*/
@ApiModel("档口需求安排生产")
@Data
public class StoreProdDemandWorkingDTO {
@ApiModelProperty(name = "档口ID")
private Long storeId;
@ApiModelProperty(name = "档口需求明细ID")
private List<Long> storeProdDemandDetailIdList;
@ApiModelProperty(name = "是否导出生产单")
private Boolean download;
}

View File

@ -3,8 +3,6 @@ package com.ruoyi.xkt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.xkt.domain.StoreProductStorageDemandDeduct;
import java.util.List;
/**
* Mapper
*
@ -12,51 +10,5 @@ import java.util.List;
* @date 2025-03-26
*/
public interface StoreProductStorageDemandDeductMapper extends BaseMapper<StoreProductStorageDemandDeduct> {
/**
*
*
* @param id
* @return
*/
public StoreProductStorageDemandDeduct selectStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteId(Long id);
/**
*
*
* @param storeProductStorageDemandDeducte
* @return
*/
public List<StoreProductStorageDemandDeduct> selectStoreProductStorageDemandDeducteList(StoreProductStorageDemandDeduct storeProductStorageDemandDeducte);
/**
*
*
* @param storeProductStorageDemandDeducte
* @return
*/
public int insertStoreProductStorageDemandDeducte(StoreProductStorageDemandDeduct storeProductStorageDemandDeducte);
/**
*
*
* @param storeProductStorageDemandDeducte
* @return
*/
public int updateStoreProductStorageDemandDeducte(StoreProductStorageDemandDeduct storeProductStorageDemandDeducte);
/**
*
*
* @param id
* @return
*/
public int deleteStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteId(Long id);
/**
*
*
* @param storeProdStorDemaDeducteIds
* @return
*/
public int deleteStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteIds(Long[] storeProdStorDemaDeducteIds);
}

View File

@ -1,14 +0,0 @@
package com.ruoyi.xkt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.xkt.domain.StoreProductStorageDemandDeductNew;
/**
* Mapper
*
* @author ruoyi
* @date 2025-03-26
*/
public interface StoreProductStorageDemandDeductNewMapper extends BaseMapper<StoreProductStorageDemandDeductNew> {
}

View File

@ -1,6 +1,6 @@
package com.ruoyi.xkt.service;
import com.ruoyi.xkt.domain.StoreColor;
import com.ruoyi.xkt.dto.storeColor.StoreColorDTO;
import java.util.List;
@ -11,51 +11,13 @@ import java.util.List;
* @date 2025-03-26
*/
public interface IStoreColorService {
/**
*
*
* @param storeColorId
* @return
*/
public StoreColor selectStoreColorByStoreColorId(Long storeColorId);
/**
*
*
* @param storeColor
* @return
* @param storeId ID
* @return List<StoreColorDTO>
*/
public List<StoreColor> selectStoreColorList(StoreColor storeColor);
List<StoreColorDTO> list(Long storeId);
/**
*
*
* @param storeColor
* @return
*/
public int insertStoreColor(StoreColor storeColor);
/**
*
*
* @param storeColor
* @return
*/
public int updateStoreColor(StoreColor storeColor);
/**
*
*
* @param storeColorIds
* @return
*/
public int deleteStoreColorByStoreColorIds(Long[] storeColorIds);
/**
*
*
* @param storeColorId
* @return
*/
public int deleteStoreColorByStoreColorId(Long storeColorId);
}

View File

@ -2,10 +2,7 @@ package com.ruoyi.xkt.service;
import com.ruoyi.common.core.page.Page;
import com.ruoyi.xkt.domain.StoreProductDemand;
import com.ruoyi.xkt.dto.storeProductDemand.StoreProdDemandDTO;
import com.ruoyi.xkt.dto.storeProductDemand.StoreProdDemandPageDTO;
import com.ruoyi.xkt.dto.storeProductDemand.StoreProdDemandPageResDTO;
import com.ruoyi.xkt.dto.storeProductDemand.StoreProdDemandQuantityDTO;
import com.ruoyi.xkt.dto.storeProductDemand.*;
import java.util.List;
@ -93,4 +90,14 @@ public interface IStoreProductDemandService {
*/
Page<StoreProdDemandPageResDTO> selectPage(StoreProdDemandPageDTO demandPageDTO);
/**
*
* DTO
*
*
* @param workingDTO
* @return
*/
Integer updateWorkingStatus(StoreProdDemandWorkingDTO workingDTO);
}

View File

@ -1,9 +1,5 @@
package com.ruoyi.xkt.service;
import com.ruoyi.xkt.domain.StoreProductStorageDemandDeduct;
import java.util.List;
/**
* Service
*
@ -11,51 +7,5 @@ import java.util.List;
* @date 2025-03-26
*/
public interface IStoreProductStorageDemandDeducteService {
/**
*
*
* @param storeProdStorDemaDeducteId
* @return
*/
public StoreProductStorageDemandDeduct selectStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteId(Long storeProdStorDemaDeducteId);
/**
*
*
* @param storeProductStorageDemandDeducte
* @return
*/
public List<StoreProductStorageDemandDeduct> selectStoreProductStorageDemandDeducteList(StoreProductStorageDemandDeduct storeProductStorageDemandDeducte);
/**
*
*
* @param storeProductStorageDemandDeducte
* @return
*/
public int insertStoreProductStorageDemandDeducte(StoreProductStorageDemandDeduct storeProductStorageDemandDeducte);
/**
*
*
* @param storeProductStorageDemandDeducte
* @return
*/
public int updateStoreProductStorageDemandDeducte(StoreProductStorageDemandDeduct storeProductStorageDemandDeducte);
/**
*
*
* @param storeProdStorDemaDeducteIds
* @return
*/
public int deleteStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteIds(Long[] storeProdStorDemaDeducteIds);
/**
*
*
* @param storeProdStorDemaDeducteId
* @return
*/
public int deleteStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteId(Long storeProdStorDemaDeducteId);
}

View File

@ -17,10 +17,10 @@ public interface IStoreProductStorageService {
/**
*
*
* @param storeProdStorId
* @param storeProdStorageId
* @return
*/
public StoreProdStorageResDTO selectByStoreProdStorId(Long storeProdStorId);
public StoreProdStorageResDTO selectByStoreProdStorageId(Long storeProdStorageId);
/**
*
@ -37,7 +37,7 @@ public interface IStoreProductStorageService {
* @param storeProdStorageId
* @return
*/
public int deleteByStoreProdStorId(Long storeProdStorageId);
public int deleteByStoreProdStorageId(Long storeProdStorageId);
/**
*

View File

@ -1,14 +1,22 @@
package com.ruoyi.xkt.service.impl;
import com.ruoyi.common.utils.DateUtils;
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.StoreColor;
import com.ruoyi.xkt.dto.storeColor.StoreColorDTO;
import com.ruoyi.xkt.mapper.StoreColorMapper;
import com.ruoyi.xkt.service.IStoreColorService;
import org.springframework.beans.factory.annotation.Autowired;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
/**
* Service
@ -17,81 +25,26 @@ import java.util.List;
* @date 2025-03-26
*/
@Service
@RequiredArgsConstructor
public class StoreColorServiceImpl implements IStoreColorService {
@Autowired
private StoreColorMapper storeColorMapper;
/**
*
*
* @param storeColorId
* @return
*/
@Override
@Transactional(readOnly = true)
public StoreColor selectStoreColorByStoreColorId(Long storeColorId) {
return storeColorMapper.selectStoreColorByStoreColorId(storeColorId);
}
final StoreColorMapper storeColorMapper;
/**
*
*
* @param storeColor
* @return
* @param storeId ID
* @return List<StoreColorDTO>
*/
@Override
@Transactional(readOnly = true)
public List<StoreColor> selectStoreColorList(StoreColor storeColor) {
return storeColorMapper.selectStoreColorList(storeColor);
public List<StoreColorDTO> list(Long storeId) {
List<StoreColor> storeColorList = Optional.ofNullable(this.storeColorMapper.selectList(new LambdaQueryWrapper<StoreColor>()
.eq(StoreColor::getStoreId, storeId).eq(StoreColor::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("当前档口没有颜色!", HttpStatus.ERROR));
return storeColorList.stream().map(x -> BeanUtil.toBean(x, StoreColorDTO.class).setStoreColorId(x.getId()))
.sorted(Comparator.comparing(StoreColorDTO::getOrderNum)).collect(Collectors.toList());
}
/**
*
*
* @param storeColor
* @return
*/
@Override
@Transactional
public int insertStoreColor(StoreColor storeColor) {
storeColor.setCreateTime(DateUtils.getNowDate());
return storeColorMapper.insertStoreColor(storeColor);
}
/**
*
*
* @param storeColor
* @return
*/
@Override
@Transactional
public int updateStoreColor(StoreColor storeColor) {
storeColor.setUpdateTime(DateUtils.getNowDate());
return storeColorMapper.updateStoreColor(storeColor);
}
/**
*
*
* @param storeColorIds
* @return
*/
@Override
@Transactional
public int deleteStoreColorByStoreColorIds(Long[] storeColorIds) {
return storeColorMapper.deleteStoreColorByStoreColorIds(storeColorIds);
}
/**
*
*
* @param storeColorId
* @return
*/
@Override
@Transactional
public int deleteStoreColorByStoreColorId(Long storeColorId) {
return storeColorMapper.deleteStoreColorByStoreColorId(storeColorId);
}
}

View File

@ -80,7 +80,8 @@ public class StoreCustomerServiceImpl implements IStoreCustomerService {
@Transactional(readOnly = true)
public Page<StoreCusPageResDTO> selectPage(StoreCusPageDTO storeCusPageDTO) {
LambdaQueryWrapper<StoreCustomer> queryWrapper = new LambdaQueryWrapper<StoreCustomer>()
.eq(StoreCustomer::getStoreId, storeCusPageDTO.getStoreId()).eq(StoreCustomer::getDelFlag, Constants.UNDELETED);
.eq(StoreCustomer::getStoreId, storeCusPageDTO.getStoreId()).eq(StoreCustomer::getDelFlag, Constants.UNDELETED)
.orderByDesc(StoreCustomer::getCreateTime);
if (StringUtils.isNotBlank(storeCusPageDTO.getCusName())) {
queryWrapper.like(StoreCustomer::getCusName, storeCusPageDTO.getCusName());
}

View File

@ -5,14 +5,14 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.core.page.Page;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.xkt.domain.*;
import com.ruoyi.xkt.dto.storeProductDemand.StoreProdDemandDTO;
import com.ruoyi.xkt.dto.storeProductDemand.StoreProdDemandPageDTO;
import com.ruoyi.xkt.dto.storeProductDemand.StoreProdDemandPageResDTO;
import com.ruoyi.xkt.dto.storeProductDemand.StoreProdDemandQuantityDTO;
import com.ruoyi.xkt.dto.storeProductDemand.*;
import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockDTO;
import com.ruoyi.xkt.enums.DemandStatus;
import com.ruoyi.xkt.enums.EVoucherSequenceType;
import com.ruoyi.xkt.mapper.*;
import com.ruoyi.xkt.service.IStoreProductDemandService;
@ -20,6 +20,7 @@ import com.ruoyi.xkt.service.IVoucherSequenceService;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.ibatis.executor.BatchResult;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -184,6 +185,26 @@ public class StoreProductDemandServiceImpl implements IStoreProductDemandService
return Page.convert(new PageInfo<>(demandList));
}
/**
*
* DTO
*
*
* @param workingDTO
* @return
*/
@Override
@Transactional
public Integer updateWorkingStatus(StoreProdDemandWorkingDTO workingDTO) {
List<StoreProductDemandDetail> demandDetailList = Optional.ofNullable(this.storeProdDemandDetailMapper.selectList(new LambdaQueryWrapper<StoreProductDemandDetail>()
.eq(StoreProductDemandDetail::getStoreId, workingDTO.getStoreId()).eq(StoreProductDemandDetail::getDelFlag, Constants.UNDELETED)
.in(StoreProductDemandDetail::getId, workingDTO.getStoreProdDemandDetailIdList())))
.orElseThrow(() -> new ServiceException("需求单明细不存在!", HttpStatus.ERROR));
demandDetailList.forEach(x -> x.setDetailStatus(DemandStatus.IN_PRODUCTION.getValue()));
List<BatchResult> list = this.storeProdDemandDetailMapper.updateById(demandDetailList);
return list.size();
}
/**
*
@ -192,6 +213,7 @@ public class StoreProductDemandServiceImpl implements IStoreProductDemandService
* @return
*/
@Override
@Transactional(readOnly = true)
public StoreProductDemand selectStoreProductDemandByStoreProdDemandId(Long storeProdDemandId) {
return storeProdDemandMapper.selectStoreProductDemandByStoreProdDemandId(storeProdDemandId);
}
@ -203,6 +225,7 @@ public class StoreProductDemandServiceImpl implements IStoreProductDemandService
* @return
*/
@Override
@Transactional(readOnly = true)
public List<StoreProductDemand> selectStoreProductDemandList(StoreProductDemand storeProductDemand) {
return storeProdDemandMapper.selectStoreProductDemandList(storeProductDemand);
}
@ -214,6 +237,7 @@ public class StoreProductDemandServiceImpl implements IStoreProductDemandService
* @return
*/
@Override
@Transactional
public int insertStoreProductDemand(StoreProductDemand storeProductDemand) {
storeProductDemand.setCreateTime(DateUtils.getNowDate());
return storeProdDemandMapper.insertStoreProductDemand(storeProductDemand);
@ -239,6 +263,7 @@ public class StoreProductDemandServiceImpl implements IStoreProductDemandService
* @return
*/
@Override
@Transactional
public int deleteStoreProductDemandByStoreProdDemandIds(Long[] storeProdDemandIds) {
return storeProdDemandMapper.deleteStoreProductDemandByStoreProdDemandIds(storeProdDemandIds);
}
@ -250,6 +275,7 @@ public class StoreProductDemandServiceImpl implements IStoreProductDemandService
* @return
*/
@Override
@Transactional
public int deleteStoreProductDemandByStoreProdDemandId(Long storeProdDemandId) {
return storeProdDemandMapper.deleteStoreProductDemandByStoreProdDemandId(storeProdDemandId);
}

View File

@ -1,14 +1,9 @@
package com.ruoyi.xkt.service.impl;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.xkt.domain.StoreProductStorageDemandDeduct;
import com.ruoyi.xkt.mapper.StoreProductStorageDemandDeductMapper;
import com.ruoyi.xkt.service.IStoreProductStorageDemandDeducteService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* Service
@ -21,77 +16,5 @@ public class StoreProductStorageDemandDeducteServiceImpl implements IStoreProduc
@Autowired
private StoreProductStorageDemandDeductMapper storeProductStorageDemandDeducteMapper;
/**
*
*
* @param storeProdStorDemaDeducteId
* @return
*/
@Override
@Transactional(readOnly = true)
public StoreProductStorageDemandDeduct selectStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteId(Long storeProdStorDemaDeducteId) {
return storeProductStorageDemandDeducteMapper.selectStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteId(storeProdStorDemaDeducteId);
}
/**
*
*
* @param storeProductStorageDemandDeducte
* @return
*/
@Override
@Transactional(readOnly = true)
public List<StoreProductStorageDemandDeduct> selectStoreProductStorageDemandDeducteList(StoreProductStorageDemandDeduct storeProductStorageDemandDeducte) {
return storeProductStorageDemandDeducteMapper.selectStoreProductStorageDemandDeducteList(storeProductStorageDemandDeducte);
}
/**
*
*
* @param storeProductStorageDemandDeducte
* @return
*/
@Override
@Transactional
public int insertStoreProductStorageDemandDeducte(StoreProductStorageDemandDeduct storeProductStorageDemandDeducte) {
storeProductStorageDemandDeducte.setCreateTime(DateUtils.getNowDate());
return storeProductStorageDemandDeducteMapper.insertStoreProductStorageDemandDeducte(storeProductStorageDemandDeducte);
}
/**
*
*
* @param storeProductStorageDemandDeducte
* @return
*/
@Override
@Transactional
public int updateStoreProductStorageDemandDeducte(StoreProductStorageDemandDeduct storeProductStorageDemandDeducte) {
storeProductStorageDemandDeducte.setUpdateTime(DateUtils.getNowDate());
return storeProductStorageDemandDeducteMapper.updateStoreProductStorageDemandDeducte(storeProductStorageDemandDeducte);
}
/**
*
*
* @param storeProdStorDemaDeducteIds
* @return
*/
@Override
@Transactional
public int deleteStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteIds(Long[] storeProdStorDemaDeducteIds) {
return storeProductStorageDemandDeducteMapper.deleteStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteIds(storeProdStorDemaDeducteIds);
}
/**
*
*
* @param storeProdStorDemaDeducteId
* @return
*/
@Override
@Transactional
public int deleteStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteId(Long storeProdStorDemaDeducteId) {
return storeProductStorageDemandDeducteMapper.deleteStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteId(storeProdStorDemaDeducteId);
}
}

View File

@ -11,16 +11,14 @@ import com.ruoyi.common.core.page.Page;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.xkt.domain.StoreProductDemandDetail;
import com.ruoyi.xkt.domain.StoreProductStorage;
import com.ruoyi.xkt.domain.StoreProductStorageDemandDeductNew;
import com.ruoyi.xkt.domain.StoreProductStorageDetail;
import com.ruoyi.xkt.domain.*;
import com.ruoyi.xkt.dto.storeProdStorage.StoreProdStorageDTO;
import com.ruoyi.xkt.dto.storeProdStorage.StoreProdStoragePageDTO;
import com.ruoyi.xkt.dto.storeProdStorage.StoreProdStoragePageResDTO;
import com.ruoyi.xkt.dto.storeProdStorage.StoreProdStorageResDTO;
import com.ruoyi.xkt.dto.storeProductDemand.StoreProdDemandSimpleDTO;
import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockDTO;
import com.ruoyi.xkt.enums.DemandStatus;
import com.ruoyi.xkt.enums.EVoucherSequenceType;
import com.ruoyi.xkt.mapper.*;
import com.ruoyi.xkt.service.IStoreProductStockService;
@ -54,7 +52,6 @@ public class StoreProductStorageServiceImpl implements IStoreProductStorageServi
final StoreProductDemandDetailMapper demandDetailMapper;
final StoreProductDemandMapper demandMapper;
final StoreProductStorageDemandDeductMapper deductMapper;
final StoreProductStorageDemandDeductNewMapper deductNewMapper;
/**
@ -100,25 +97,373 @@ public class StoreProductStorageServiceImpl implements IStoreProductStorageServi
List<StoreProdStockDTO> increaseStockList = BeanUtil.copyToList(detailList, StoreProdStockDTO.class);
// 增加档口商品的库存
this.stockService.increaseStock(storeProdStorageDTO.getStoreId(), increaseStockList);
// 处理档口商品需求单的抵扣
this.handleStorageDemandDeduct(storeProdStorageDTO.getStoreId(), storeProdStorage.getCode(), detailList);
return count;
}
/**
*
*
*
* @param storeId ID
* @param storageCode
* @param detailList
*/
private void handleStorageDemandDeduct(Long storeId, String storageCode, List<StoreProductStorageDetail> detailList) {
// 根据明细列表找到所有提交的需求
List<StoreProductDemandDetail> demandDetailList = this.demandDetailMapper.selectList(new LambdaQueryWrapper<StoreProductDemandDetail>()
.eq(StoreProductDemandDetail::getStoreId, storeProdStorageDTO.getStoreId()).eq(StoreProductDemandDetail::getDelFlag, Constants.UNDELETED)
.in(StoreProductDemandDetail::getDetailStatus, Arrays.asList(1, 2))
.eq(StoreProductDemandDetail::getStoreId, storeId).eq(StoreProductDemandDetail::getDelFlag, Constants.UNDELETED)
.in(StoreProductDemandDetail::getDetailStatus, Arrays.asList(DemandStatus.PENDING_PRODUCTION.getValue(), DemandStatus.IN_PRODUCTION.getValue()))
.in(StoreProductDemandDetail::getStoreProdColorId, detailList.stream().map(StoreProductStorageDetail::getStoreProdColorId).collect(Collectors.toList())));
// 若没有任何需求则不抵扣,直接结束流程
if (CollectionUtils.isEmpty(demandDetailList)) {
return count;
return;
}
// 所有的需求单ID列表
final List<Long> demandIdList = demandDetailList.stream().map(StoreProductDemandDetail::getStoreProdDemandId).distinct().collect(Collectors.toList());
List<StoreProductStorageDemandDeductNew> deductedNewList = this.deductNewMapper.selectList(new LambdaQueryWrapper<StoreProductStorageDemandDeductNew>()
.in(StoreProductStorageDemandDeductNew::getStoreProdColorId, detailList.stream().map(StoreProductStorageDetail::getStoreProdColorId).collect(Collectors.toList()))
.eq(StoreProductStorageDemandDeductNew::getDelFlag, Constants.UNDELETED));
// 已存在的需求抵扣明细列表
Map<Long, Map<Integer, Integer>> deductedExistsMap = deductedNewList.stream().collect(Collectors.groupingBy(StoreProductStorageDemandDeductNew::getStoreProdColorId,
Collectors.groupingBy(StoreProductStorageDemandDeductNew::getSize, Collectors.summingInt(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)))));
// 所有颜色尺码需要抵扣的需求数量
Map<Long, Map<Integer, Map<Long, Integer>>> unDeductMap = this.getUnDeductMap(demandDetailList, detailList);
if (MapUtils.isEmpty(unDeductMap)) {
return;
}
// 按照入库明细列表依次进行需求数量扣减
Map<Long, Map<Long, Map<Integer, Integer>>> storageQuantityMap = this.getStorageQuantityMap(detailList);
if (MapUtils.isEmpty(storageQuantityMap)) {
return;
}
// 按照入库的数量明细依次判断哪些需求订单明细还未抵扣完毕
Map<Long, Map<Long, Map<Integer, Map<Long, Integer>>>> totalMatchMap = this.getTotalMatchMap(storageQuantityMap, unDeductMap);
if (MapUtils.isEmpty(totalMatchMap)) {
return;
}
// 新增入库与需求的抵扣关系
List<Long> updateDetailIdList = this.createDemandDeduct(storageCode, demandDetailList, totalMatchMap);
// 根据最新的数据更新需求单的抵扣状态
this.updateLatestDemandStatus(updateDetailIdList, demandIdList, totalMatchMap);
}
/**
*
*
* @param storeProdStorageId
* @return
*/
@Override
@Transactional(readOnly = true)
public StoreProdStorageResDTO selectByStoreProdStorageId(Long storeProdStorageId) {
// 档口商品入库
StoreProductStorage storage = Optional.ofNullable(this.storageMapper.selectOne(new LambdaQueryWrapper<StoreProductStorage>()
.eq(StoreProductStorage::getId, storeProdStorageId).eq(StoreProductStorage::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("档口商品入库不存在!", HttpStatus.ERROR));
// 档口商品入库明细
List<StoreProductStorageDetail> storageDetailList = storageDetailMapper.selectList(new LambdaQueryWrapper<StoreProductStorageDetail>()
.eq(StoreProductStorageDetail::getStoreProdStorId, storeProdStorageId).eq(StoreProductStorageDetail::getDelFlag, Constants.UNDELETED));
return BeanUtil.toBean(storage, StoreProdStorageResDTO.class)
.setDetailList(storageDetailList.stream().map(x -> BeanUtil.toBean(x, StoreProdStorageResDTO.StorageDetailDTO.class)).collect(Collectors.toList()));
}
/**
* ID
* <p>
*
*
*
*
*
* @param storeProdStorageId ID
* @return
* @throws ServiceException
*/
@Override
@Transactional
public int deleteByStoreProdStorageId(Long storeProdStorageId) {
// 档口商品入库
StoreProductStorage storage = Optional.ofNullable(this.storageMapper.selectOne(new LambdaQueryWrapper<StoreProductStorage>()
.eq(StoreProductStorage::getId, storeProdStorageId).eq(StoreProductStorage::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("档口商品入库不存在!", HttpStatus.ERROR));
storage.setDelFlag(Constants.DELETED);
int count = this.storageMapper.updateById(storage);
// 档口商品入库明细
List<StoreProductStorageDetail> storageDetailList = storageDetailMapper.selectList(new LambdaQueryWrapper<StoreProductStorageDetail>()
.eq(StoreProductStorageDetail::getStoreProdStorId, storeProdStorageId).eq(StoreProductStorageDetail::getDelFlag, Constants.UNDELETED));
storageDetailList.forEach(x -> x.setDelFlag(Constants.DELETED));
this.storageDetailMapper.updateById(storageDetailList);
// 减少档口商品库存
this.stockService.decreaseStock(storage.getStoreId(), storageDetailList.stream()
.map(x -> BeanUtil.toBean(x, StoreProdStockDTO.class)).collect(Collectors.toList()));
// 将入库抵扣的需求的中间表删除
this.deleteStorageDemandDeduct(storageDetailList);
return count;
}
/**
*
*
*
* @param storageDetailList
*/
private void deleteStorageDemandDeduct(List<StoreProductStorageDetail> storageDetailList) {
// 入库单明细ID列表
List<Long> storageDetailIdList = storageDetailList.stream().map(StoreProductStorageDetail::getId).collect(Collectors.toList());
List<StoreProductStorageDemandDeduct> deductList = this.deductMapper.selectList(new LambdaQueryWrapper<StoreProductStorageDemandDeduct>()
.eq(StoreProductStorageDemandDeduct::getDelFlag, Constants.UNDELETED).in(StoreProductStorageDemandDeduct::getStoreProdStorageDetailId, storageDetailIdList));
if (CollectionUtils.isEmpty(deductList)) {
return;
}
// 将入库单明细对应的需求单状态更改为待生产 或 生产中
List<Long> demandDetailIdList = deductList.stream().map(StoreProductStorageDemandDeduct::getStoreProdDemandDetailId).distinct().collect(Collectors.toList());
List<StoreProductDemandDetail> demandDetailList = Optional.ofNullable(this.demandDetailMapper.selectList(new LambdaQueryWrapper<StoreProductDemandDetail>()
.in(StoreProductDemandDetail::getId, demandDetailIdList).eq(StoreProductDemandDetail::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("需求单明细不存在!", HttpStatus.ERROR));
List<StoreProductDemand> demandList = Optional.ofNullable(this.demandMapper.selectList(new LambdaQueryWrapper<StoreProductDemand>()
.in(StoreProductDemand::getId, demandDetailList.stream().map(StoreProductDemandDetail::getStoreProdDemandId).distinct().collect(Collectors.toList()))
.eq(StoreProductDemand::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("需求单不存在!", HttpStatus.ERROR));
// 将需求单已完成状态更改为:生产中
demandList = demandList.stream().filter(x -> Objects.equals(x.getDemandStatus(), DemandStatus.PRODUCTION_COMPLETE.getValue()))
.peek(x -> x.setDemandStatus(DemandStatus.IN_PRODUCTION.getValue())).collect(Collectors.toList());
this.demandMapper.updateById(demandList);
demandDetailList = demandDetailList.stream().filter(x -> Objects.equals(x.getDetailStatus(), DemandStatus.PRODUCTION_COMPLETE.getValue()))
.peek(x -> x.setDetailStatus(DemandStatus.IN_PRODUCTION.getValue())).collect(Collectors.toList());
this.demandDetailMapper.updateById(demandDetailList);
// 将中间表关系置为无效
deductList.forEach(x -> x.setDelFlag(Constants.DELETED));
this.deductMapper.updateById(deductList);
}
private void updateLatestDemandStatus(List<Long> updateDetailIdList, List<Long> demandIdList, Map<Long, Map<Long, Map<Integer, Map<Long, Integer>>>> totalMatchMap) {
List<StoreProductStorageDemandDeduct> listAfterInsert = this.deductMapper.selectList(new LambdaQueryWrapper<StoreProductStorageDemandDeduct>()
.eq(StoreProductStorageDemandDeduct::getDelFlag, Constants.UNDELETED).in(StoreProductStorageDemandDeduct::getStoreProdDemandDetailId, updateDetailIdList));
if (CollectionUtils.isEmpty(listAfterInsert)) {
return;
}
Map<Long, List<StoreProductStorageDemandDeduct>> latestDeductMap = listAfterInsert.stream().collect(Collectors.groupingBy(StoreProductStorageDemandDeduct::getStoreProdDemandDetailId));
Map<Long, Map<Integer, Integer>> latestDeductSizeQuantityMap = new LinkedHashMap<>();
latestDeductMap.forEach((storeProdDemandDetailId, latestDeductList) -> {
Map<Integer, Integer> sizeQuantityMap = new LinkedHashMap<>();
Integer size30Quantity = latestDeductList.stream().filter(x -> x.getSize() == 30).map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
sizeQuantityMap.put(30, size30Quantity);
Integer size31Quantity = latestDeductList.stream().filter(x -> x.getSize() == 31).map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
sizeQuantityMap.put(31, size31Quantity);
Integer size32Quantity = latestDeductList.stream().filter(x -> x.getSize() == 32).map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
sizeQuantityMap.put(32, size32Quantity);
Integer size33Quantity = latestDeductList.stream().filter(x -> x.getSize() == 33).map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
sizeQuantityMap.put(33, size33Quantity);
Integer size34Quantity = latestDeductList.stream().filter(x -> x.getSize() == 34).map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
sizeQuantityMap.put(34, size34Quantity);
Integer size35Quantity = latestDeductList.stream().filter(x -> x.getSize() == 35).map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
sizeQuantityMap.put(35, size35Quantity);
Integer size36Quantity = latestDeductList.stream().filter(x -> x.getSize() == 36).map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
sizeQuantityMap.put(36, size36Quantity);
Integer size37Quantity = latestDeductList.stream().filter(x -> x.getSize() == 37).map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
sizeQuantityMap.put(37, size37Quantity);
Integer size38Quantity = latestDeductList.stream().filter(x -> x.getSize() == 38).map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
sizeQuantityMap.put(38, size38Quantity);
Integer size39Quantity = latestDeductList.stream().filter(x -> x.getSize() == 39).map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
sizeQuantityMap.put(39, size39Quantity);
Integer size40Quantity = latestDeductList.stream().filter(x -> x.getSize() == 40).map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
sizeQuantityMap.put(40, size40Quantity);
Integer size41Quantity = latestDeductList.stream().filter(x -> x.getSize() == 41).map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
sizeQuantityMap.put(41, size41Quantity);
Integer size42Quantity = latestDeductList.stream().filter(x -> x.getSize() == 42).map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
sizeQuantityMap.put(42, size42Quantity);
Integer size43Quantity = latestDeductList.stream().filter(x -> x.getSize() == 43).map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
sizeQuantityMap.put(43, size43Quantity);
latestDeductSizeQuantityMap.put(storeProdDemandDetailId, sizeQuantityMap);
});
// 筛选出所有和本次需求单抵扣有关的需求单列表
List<StoreProductDemandDetail> updateDemandDetailList = Optional.ofNullable(this.demandDetailMapper.selectList(new LambdaQueryWrapper<StoreProductDemandDetail>()
.in(StoreProductDemandDetail::getStoreProdDemandId, demandIdList).eq(StoreProductDemandDetail::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("获取需求单明细失败", HttpStatus.ERROR));
// 依次对比需求单明细不同size的完成数量并更新需求单明细的detailStatus
List<StoreProductDemandDetail> demandDetailListAfterUpdate = updateDemandDetailList.stream().map(updateDetail -> {
Map<Integer, Integer> latestSizeQuantityMap = latestDeductSizeQuantityMap.get(updateDetail.getId());
if (MapUtils.isEmpty(latestSizeQuantityMap)) {
return updateDetail;
}
Boolean size30Finish = ObjectUtils.defaultIfNull(latestSizeQuantityMap.get(30), 0) >= ObjectUtils.defaultIfNull(updateDetail.getSize30(), 0);
Boolean size31Finish = ObjectUtils.defaultIfNull(latestSizeQuantityMap.get(31), 0) >= ObjectUtils.defaultIfNull(updateDetail.getSize31(), 0);
Boolean size32Finish = ObjectUtils.defaultIfNull(latestSizeQuantityMap.get(32), 0) >= ObjectUtils.defaultIfNull(updateDetail.getSize32(), 0);
Boolean size33Finish = ObjectUtils.defaultIfNull(latestSizeQuantityMap.get(33), 0) >= ObjectUtils.defaultIfNull(updateDetail.getSize33(), 0);
Boolean size34Finish = ObjectUtils.defaultIfNull(latestSizeQuantityMap.get(34), 0) >= ObjectUtils.defaultIfNull(updateDetail.getSize34(), 0);
Boolean size35Finish = ObjectUtils.defaultIfNull(latestSizeQuantityMap.get(35), 0) >= ObjectUtils.defaultIfNull(updateDetail.getSize35(), 0);
Boolean size36Finish = ObjectUtils.defaultIfNull(latestSizeQuantityMap.get(36), 0) >= ObjectUtils.defaultIfNull(updateDetail.getSize36(), 0);
Boolean size37Finish = ObjectUtils.defaultIfNull(latestSizeQuantityMap.get(37), 0) >= ObjectUtils.defaultIfNull(updateDetail.getSize37(), 0);
Boolean size38Finish = ObjectUtils.defaultIfNull(latestSizeQuantityMap.get(38), 0) >= ObjectUtils.defaultIfNull(updateDetail.getSize38(), 0);
Boolean size39Finish = ObjectUtils.defaultIfNull(latestSizeQuantityMap.get(39), 0) >= ObjectUtils.defaultIfNull(updateDetail.getSize39(), 0);
Boolean size40Finish = ObjectUtils.defaultIfNull(latestSizeQuantityMap.get(40), 0) >= ObjectUtils.defaultIfNull(updateDetail.getSize40(), 0);
Boolean size41Finish = ObjectUtils.defaultIfNull(latestSizeQuantityMap.get(41), 0) >= ObjectUtils.defaultIfNull(updateDetail.getSize41(), 0);
Boolean size42Finish = ObjectUtils.defaultIfNull(latestSizeQuantityMap.get(42), 0) >= ObjectUtils.defaultIfNull(updateDetail.getSize42(), 0);
Boolean size43Finish = ObjectUtils.defaultIfNull(latestSizeQuantityMap.get(43), 0) >= ObjectUtils.defaultIfNull(updateDetail.getSize43(), 0);
if (size30Finish && size31Finish && size32Finish && size33Finish && size34Finish && size35Finish && size36Finish && size37Finish && size38Finish
&& size39Finish && size40Finish && size41Finish && size42Finish && size43Finish) {
updateDetail.setDetailStatus(DemandStatus.PRODUCTION_COMPLETE.getValue());
}
return updateDetail;
}).collect(Collectors.toList());
this.demandDetailMapper.updateById(demandDetailListAfterUpdate);
Map<Long, List<StoreProductDemandDetail>> demandGroupMap = updateDemandDetailList.stream().collect(Collectors.groupingBy(StoreProductDemandDetail::getStoreProdDemandId));
List<Long> demandIdListAfterUpdate = new ArrayList<>();
demandGroupMap.forEach((demandId, tempDetailList) -> {
if (tempDetailList.stream().allMatch(x -> x.getDetailStatus() == 3)) {
demandIdListAfterUpdate.add(demandId);
}
});
if (CollectionUtils.isNotEmpty(demandIdListAfterUpdate)) {
this.demandMapper.updateStatusByIds(demandIdListAfterUpdate);
}
}
private List<Long> createDemandDeduct(String storageCode, List<StoreProductDemandDetail> demandDetailList, Map<Long, Map<Long, Map<Integer, Map<Long, Integer>>>> totalMatchMap) {
List<StoreProdDemandSimpleDTO> demandSimpleList = Optional.ofNullable(this.demandDetailMapper.selectDemandCodeList(demandDetailList.stream()
.map(StoreProductDemandDetail::getId).distinct().collect(Collectors.toList())))
.orElseThrow(() -> new ServiceException("获取需求单号失败", HttpStatus.ERROR));
// demandDetailId 与 demandCode 的映射关系
Map<Long, String> demandCodeMap = demandSimpleList.stream().collect(Collectors.toMap(StoreProdDemandSimpleDTO::getStoreProdDemandDetailId, StoreProdDemandSimpleDTO::getCode));
List<StoreProductStorageDemandDeduct> deductList = new ArrayList<>();
// 待更新的需求单明细ID列表
List<Long> updateDetailIdList = new ArrayList<>();
totalMatchMap.forEach((storeProdColorId, detailSizeStorageMap) -> {
detailSizeStorageMap.forEach((storageDetailId, sizeMatchMap) -> {
sizeMatchMap.forEach((size, itemMatchMap) -> {
itemMatchMap.forEach((storeProductDemandDetailId, matchQuantity) -> {
StoreProductStorageDemandDeduct deductNew = new StoreProductStorageDemandDeduct();
deductNew.setStoreProdColorId(storeProdColorId).setStoreProdDemandDetailId(storeProductDemandDetailId)
.setStoreProdStorageDetailId(storageDetailId).setStorageCode(storageCode).setDemandCode(demandCodeMap.get(storeProductDemandDetailId))
.setSize(size).setQuantity(matchQuantity).setDelFlag(Constants.UNDELETED);
updateDetailIdList.add(storeProductDemandDetailId);
deductList.add(deductNew);
});
});
});
});
this.deductMapper.insert(deductList);
return updateDetailIdList;
}
private Map<Long, Map<Long, Map<Integer, Map<Long, Integer>>>> getTotalMatchMap(Map<Long, Map<Long, Map<Integer, Integer>>> storageQuantityMap,
Map<Long, Map<Integer, Map<Long, Integer>>> unDeductMap) {
// 按照入库的数量明细依次判断哪些需求订单明细还未抵扣完毕
Map<Long, Map<Long, Map<Integer, Map<Long, Integer>>>> totalMatchMap = new LinkedHashMap<>();
storageQuantityMap.forEach((storeProdColorId, detailSizeStorageMap) -> {
Map<Integer, Map<Long, Integer>> sizeRequireMap = unDeductMap.get(storeProdColorId);
if (MapUtils.isEmpty(sizeRequireMap) || MapUtils.isEmpty(detailSizeStorageMap)) {
return;
}
Map<Long, Map<Integer, Map<Long, Integer>>> storageDetailIdSizeMatchMap = new LinkedHashMap<>();
// 匹配的尺码集合
detailSizeStorageMap.forEach((storageDetailId, sizeStorageMap) -> {
if (MapUtils.isEmpty(sizeStorageMap)) {
return;
}
Map<Integer, Map<Long, Integer>> sizeMatchMap = new LinkedHashMap<>();
// 遍历每个入库单明细尺码
sizeStorageMap.forEach((size, storageQuantity) -> {
Map<Long, Integer> requireMap = sizeRequireMap.get(size);
if (MapUtils.isEmpty(requireMap)) {
return;
}
// key storeProductDemandDetailId value matchQuantity
Map<Long, Integer> itemMatchMap = new LinkedHashMap<>();
// 遍历每个需求订单
for (Map.Entry<Long, Integer> entry : requireMap.entrySet()) {
// 尺码的入库数量 + 当前尺码的需求明细数量
final int tempCompareQuantity = storageQuantity + entry.getValue();
if (tempCompareQuantity == 0) {
continue;
}
if (tempCompareQuantity > 0) {
// value 取绝对值
itemMatchMap.put(entry.getKey(), Math.abs(entry.getValue()));
storageQuantity = tempCompareQuantity;
} else {
// value 取绝对值
itemMatchMap.put(entry.getKey(), Math.abs(storageQuantity));
break;
}
}
// 本次入库单明细可抵扣的需求单明细ID及数量
if (MapUtils.isNotEmpty(itemMatchMap)) {
sizeMatchMap.put(size, itemMatchMap);
}
});
if (MapUtils.isNotEmpty(sizeMatchMap)) {
storageDetailIdSizeMatchMap.put(storageDetailId, sizeMatchMap);
}
});
if (MapUtils.isNotEmpty(storageDetailIdSizeMatchMap)) {
totalMatchMap.put(storeProdColorId, storageDetailIdSizeMatchMap);
}
});
return totalMatchMap;
}
private Map<Long, Map<Long, Map<Integer, Integer>>> getStorageQuantityMap(List<StoreProductStorageDetail> detailList) {
// 按照入库明细列表依次进行需求数量扣减
Map<Long, Map<Long, Map<Integer, Integer>>> storageQuantityMap = new LinkedHashMap<>();
for (StoreProductStorageDetail storageDetail : detailList) {
Map<Integer, Integer> sizeStorageMap = new LinkedHashMap<>();
if (ObjectUtils.isNotEmpty(storageDetail.getSize30())) {
sizeStorageMap.put(30, storageDetail.getSize30());
}
if (ObjectUtils.isNotEmpty(storageDetail.getSize31())) {
sizeStorageMap.put(31, storageDetail.getSize31());
}
if (ObjectUtils.isNotEmpty(storageDetail.getSize32())) {
sizeStorageMap.put(32, storageDetail.getSize32());
}
if (ObjectUtils.isNotEmpty(storageDetail.getSize33())) {
sizeStorageMap.put(33, storageDetail.getSize33());
}
if (ObjectUtils.isNotEmpty(storageDetail.getSize34())) {
sizeStorageMap.put(34, storageDetail.getSize34());
}
if (ObjectUtils.isNotEmpty(storageDetail.getSize35())) {
sizeStorageMap.put(35, storageDetail.getSize35());
}
if (ObjectUtils.isNotEmpty(storageDetail.getSize36())) {
sizeStorageMap.put(36, storageDetail.getSize36());
}
if (ObjectUtils.isNotEmpty(storageDetail.getSize37())) {
sizeStorageMap.put(37, storageDetail.getSize37());
}
if (ObjectUtils.isNotEmpty(storageDetail.getSize38())) {
sizeStorageMap.put(38, storageDetail.getSize38());
}
if (ObjectUtils.isNotEmpty(storageDetail.getSize39())) {
sizeStorageMap.put(39, storageDetail.getSize39());
}
if (ObjectUtils.isNotEmpty(storageDetail.getSize40())) {
sizeStorageMap.put(40, storageDetail.getSize40());
}
if (ObjectUtils.isNotEmpty(storageDetail.getSize41())) {
sizeStorageMap.put(41, storageDetail.getSize41());
}
if (ObjectUtils.isNotEmpty(storageDetail.getSize42())) {
sizeStorageMap.put(42, storageDetail.getSize42());
}
if (ObjectUtils.isNotEmpty(storageDetail.getSize43())) {
sizeStorageMap.put(43, storageDetail.getSize43());
}
if (MapUtils.isNotEmpty(sizeStorageMap)) {
storageQuantityMap.put(storageDetail.getStoreProdColorId(), new LinkedHashMap<Long, Map<Integer, Integer>>() {{
put(storageDetail.getId(), sizeStorageMap);
}});
}
}
return storageQuantityMap;
}
private Map<Long, Map<Integer, Map<Long, Integer>>> getUnDeductMap(List<StoreProductDemandDetail> demandDetailList, List<StoreProductStorageDetail> detailList) {
List<StoreProductStorageDemandDeduct> deductedList = this.deductMapper.selectList(new LambdaQueryWrapper<StoreProductStorageDemandDeduct>()
.in(StoreProductStorageDemandDeduct::getStoreProdColorId, detailList.stream().map(StoreProductStorageDetail::getStoreProdColorId).collect(Collectors.toList()))
.eq(StoreProductStorageDemandDeduct::getDelFlag, Constants.UNDELETED));
// 已存在的需求抵扣明细列表
Map<Long, Map<Integer, Integer>> deductedExistsMap = deductedList.stream().collect(Collectors.groupingBy(StoreProductStorageDemandDeduct::getStoreProdColorId,
Collectors.groupingBy(StoreProductStorageDemandDeduct::getSize, Collectors.summingInt(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)))));
// 按照需求的storeProdColorId进行分组再按照1.生产中2、待生产1 排序 2. 再按照需求创建时间升序排列
Map<Long, List<StoreProductDemandDetail>> tempDemandDetailMap = demandDetailList.stream().collect(Collectors
.groupingBy(StoreProductDemandDetail::getStoreProdColorId, Collectors
@ -224,293 +569,39 @@ public class StoreProductStorageServiceImpl implements IStoreProductStorageServi
unDeductMap.put(storeProdColorId, sizeRequireMap);
}
});
// 按照入库明细列表依次进行需求数量扣减
Map<Long, Map<Long, Map<Integer, Integer>>> storageQuantityMap = new LinkedHashMap<>();
for (StoreProductStorageDetail storageDetail : detailList) {
Map<Integer, Integer> sizeStorageMap = new LinkedHashMap<>();
if (ObjectUtils.isNotEmpty(storageDetail.getSize30())) {
sizeStorageMap.put(30, storageDetail.getSize30());
}
if (ObjectUtils.isNotEmpty(storageDetail.getSize31())) {
sizeStorageMap.put(31, storageDetail.getSize31());
}
if (ObjectUtils.isNotEmpty(storageDetail.getSize32())) {
sizeStorageMap.put(32, storageDetail.getSize32());
}
if (ObjectUtils.isNotEmpty(storageDetail.getSize33())) {
sizeStorageMap.put(33, storageDetail.getSize33());
}
if (ObjectUtils.isNotEmpty(storageDetail.getSize34())) {
sizeStorageMap.put(34, storageDetail.getSize34());
}
if (ObjectUtils.isNotEmpty(storageDetail.getSize35())) {
sizeStorageMap.put(35, storageDetail.getSize35());
}
if (ObjectUtils.isNotEmpty(storageDetail.getSize36())) {
sizeStorageMap.put(36, storageDetail.getSize36());
}
if (ObjectUtils.isNotEmpty(storageDetail.getSize37())) {
sizeStorageMap.put(37, storageDetail.getSize37());
}
if (ObjectUtils.isNotEmpty(storageDetail.getSize38())) {
sizeStorageMap.put(38, storageDetail.getSize38());
}
if (ObjectUtils.isNotEmpty(storageDetail.getSize39())) {
sizeStorageMap.put(39, storageDetail.getSize39());
}
if (ObjectUtils.isNotEmpty(storageDetail.getSize40())) {
sizeStorageMap.put(40, storageDetail.getSize40());
}
if (ObjectUtils.isNotEmpty(storageDetail.getSize41())) {
sizeStorageMap.put(41, storageDetail.getSize41());
}
if (ObjectUtils.isNotEmpty(storageDetail.getSize42())) {
sizeStorageMap.put(42, storageDetail.getSize42());
}
if (ObjectUtils.isNotEmpty(storageDetail.getSize43())) {
sizeStorageMap.put(43, storageDetail.getSize43());
}
if (MapUtils.isNotEmpty(sizeStorageMap)) {
storageQuantityMap.put(storageDetail.getStoreProdColorId(), new LinkedHashMap<Long, Map<Integer, Integer>>() {{
put(storageDetail.getId(), sizeStorageMap);
}});
}
}
// 按照入库的数量明细依次判断哪些需求订单明细还未抵扣完毕
Map<Long, Map<Long, Map<Integer, Map<Long, Integer>>>> totalMatchMap = new LinkedHashMap<>();
storageQuantityMap.forEach((storeProdColorId, detailSizeStorageMap) -> {
Map<Integer, Map<Long, Integer>> sizeRequireMap = unDeductMap.get(storeProdColorId);
if (MapUtils.isEmpty(sizeRequireMap) || MapUtils.isEmpty(detailSizeStorageMap)) {
return;
}
Map<Long, Map<Integer, Map<Long, Integer>>> storageDetailIdSizeMatchMap = new LinkedHashMap<>();
// 匹配的尺码集合
detailSizeStorageMap.forEach((storageDetailId, sizeStorageMap) -> {
if (MapUtils.isEmpty(sizeStorageMap)) {
return;
}
Map<Integer, Map<Long, Integer>> sizeMatchMap = new LinkedHashMap<>();
// 遍历每个入库单明细尺码
sizeStorageMap.forEach((size, storageQuantity) -> {
Map<Long, Integer> requireMap = sizeRequireMap.get(size);
if (MapUtils.isEmpty(requireMap)) {
return;
}
// key storeProductDemandDetailId value matchQuantity
Map<Long, Integer> itemMatchMap = new LinkedHashMap<>();
// 遍历每个需求订单
for (Map.Entry<Long, Integer> entry : requireMap.entrySet()) {
// 尺码的入库数量 + 当前尺码的需求明细数量
final int tempCompareQuantity = storageQuantity + entry.getValue();
if (tempCompareQuantity == 0) {
continue;
}
if (tempCompareQuantity > 0) {
// value 取绝对值
itemMatchMap.put(entry.getKey(), Math.abs(entry.getValue()));
storageQuantity = tempCompareQuantity;
} else {
// value 取绝对值
itemMatchMap.put(entry.getKey(), Math.abs(storageQuantity));
break;
}
}
// 本次入库单明细可抵扣的需求单明细ID及数量
if (MapUtils.isNotEmpty(itemMatchMap)) {
sizeMatchMap.put(size, itemMatchMap);
}
});
if (MapUtils.isNotEmpty(sizeMatchMap)) {
storageDetailIdSizeMatchMap.put(storageDetailId, sizeMatchMap);
}
});
if (MapUtils.isNotEmpty(storageDetailIdSizeMatchMap)) {
totalMatchMap.put(storeProdColorId, storageDetailIdSizeMatchMap);
}
});
System.err.println(totalMatchMap);
if (MapUtils.isEmpty(totalMatchMap)) {
return count;
}
List<StoreProdDemandSimpleDTO> demandSimpleList = Optional.ofNullable(this.demandDetailMapper.selectDemandCodeList(demandDetailList.stream()
.map(StoreProductDemandDetail::getId).distinct().collect(Collectors.toList())))
.orElseThrow(() -> new ServiceException("获取需求单号失败", HttpStatus.ERROR));
// demandDetailId 与 demandCode 的映射关系
Map<Long, String> demandCodeMap = demandSimpleList.stream().collect(Collectors.toMap(StoreProdDemandSimpleDTO::getStoreProdDemandDetailId, StoreProdDemandSimpleDTO::getCode));
List<StoreProductStorageDemandDeductNew> deductList = new ArrayList<>();
// 待更新的需求单明细ID列表
List<Long> updateDetailIdList = new ArrayList<>();
totalMatchMap.forEach((storeProdColorId, detailSizeStorageMap) -> {
detailSizeStorageMap.forEach((storageDetailId, sizeMatchMap) -> {
sizeMatchMap.forEach((size, itemMatchMap) -> {
itemMatchMap.forEach((storeProductDemandDetailId, matchQuantity) -> {
StoreProductStorageDemandDeductNew deductNew = new StoreProductStorageDemandDeductNew();
deductNew.setStoreProdColorId(storeProdColorId)
.setStoreProdDemandDetailId(storeProductDemandDetailId)
.setStoreProdStorageDetailId(storageDetailId)
.setStorageCode(storeProdStorage.getCode())
.setDemandCode(demandCodeMap.get(storeProductDemandDetailId))
.setSize(size)
.setQuantity(matchQuantity)
.setDelFlag(Constants.UNDELETED);
updateDetailIdList.add(storeProductDemandDetailId);
deductList.add(deductNew);
});
});
});
});
this.deductNewMapper.insert(deductList);
List<StoreProductStorageDemandDeductNew> listAfterInsert = this.deductNewMapper.selectList(new LambdaQueryWrapper<StoreProductStorageDemandDeductNew>()
.eq(StoreProductStorageDemandDeductNew::getDelFlag, Constants.UNDELETED).in(StoreProductStorageDemandDeductNew::getStoreProdDemandDetailId, updateDetailIdList));
if (CollectionUtils.isEmpty(listAfterInsert)) {
return count;
}
Map<Long, List<StoreProductStorageDemandDeductNew>> latestDeductMap = listAfterInsert.stream().collect(Collectors.groupingBy(StoreProductStorageDemandDeductNew::getStoreProdDemandDetailId));
Map<Long, Map<Integer, Integer>> latestDeductSizeQuantityMap = new LinkedHashMap<>();
latestDeductMap.forEach((storeProdDemandDetailId, latestDeductList) -> {
Map<Integer, Integer> sizeQuantityMap = new LinkedHashMap<>();
Integer size30Quantity = latestDeductList.stream().filter(x -> x.getSize() == 30).map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
sizeQuantityMap.put(30, size30Quantity);
Integer size31Quantity = latestDeductList.stream().filter(x -> x.getSize() == 31).map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
sizeQuantityMap.put(31, size31Quantity);
Integer size32Quantity = latestDeductList.stream().filter(x -> x.getSize() == 32).map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
sizeQuantityMap.put(32, size32Quantity);
Integer size33Quantity = latestDeductList.stream().filter(x -> x.getSize() == 33).map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
sizeQuantityMap.put(33, size33Quantity);
Integer size34Quantity = latestDeductList.stream().filter(x -> x.getSize() == 34).map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
sizeQuantityMap.put(34, size34Quantity);
Integer size35Quantity = latestDeductList.stream().filter(x -> x.getSize() == 35).map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
sizeQuantityMap.put(35, size35Quantity);
Integer size36Quantity = latestDeductList.stream().filter(x -> x.getSize() == 36).map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
sizeQuantityMap.put(36, size36Quantity);
Integer size37Quantity = latestDeductList.stream().filter(x -> x.getSize() == 37).map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
sizeQuantityMap.put(37, size37Quantity);
Integer size38Quantity = latestDeductList.stream().filter(x -> x.getSize() == 38).map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
sizeQuantityMap.put(38, size38Quantity);
Integer size39Quantity = latestDeductList.stream().filter(x -> x.getSize() == 39).map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
sizeQuantityMap.put(39, size39Quantity);
Integer size40Quantity = latestDeductList.stream().filter(x -> x.getSize() == 40).map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
sizeQuantityMap.put(40, size40Quantity);
Integer size41Quantity = latestDeductList.stream().filter(x -> x.getSize() == 41).map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
sizeQuantityMap.put(41, size41Quantity);
Integer size42Quantity = latestDeductList.stream().filter(x -> x.getSize() == 42).map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
sizeQuantityMap.put(42, size42Quantity);
Integer size43Quantity = latestDeductList.stream().filter(x -> x.getSize() == 43).map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
sizeQuantityMap.put(43, size43Quantity);
latestDeductSizeQuantityMap.put(storeProdDemandDetailId, sizeQuantityMap);
});
// 筛选出所有和本次需求单抵扣有关的需求单列表
List<StoreProductDemandDetail> updateDemandDetailList = Optional.ofNullable(this.demandDetailMapper.selectList(new LambdaQueryWrapper<StoreProductDemandDetail>()
.in(StoreProductDemandDetail::getStoreProdDemandId, demandIdList).eq(StoreProductDemandDetail::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("获取需求单明细失败", HttpStatus.ERROR));
// 依次对比需求单明细不同size的完成数量并更新需求单明细的detailStatus
List<StoreProductDemandDetail> demandDetailListAfterUpdate = updateDemandDetailList.stream().map(updateDetail -> {
Map<Integer, Integer> latestSizeQuantityMap = latestDeductSizeQuantityMap.get(updateDetail.getId());
if (MapUtils.isEmpty(latestSizeQuantityMap)) {
return updateDetail;
}
Boolean size30Finish = ObjectUtils.defaultIfNull(latestSizeQuantityMap.get(30), 0) >= ObjectUtils.defaultIfNull(updateDetail.getSize30(), 0);
Boolean size31Finish = ObjectUtils.defaultIfNull(latestSizeQuantityMap.get(31), 0) >= ObjectUtils.defaultIfNull(updateDetail.getSize31(), 0);
Boolean size32Finish = ObjectUtils.defaultIfNull(latestSizeQuantityMap.get(32), 0) >= ObjectUtils.defaultIfNull(updateDetail.getSize32(), 0);
Boolean size33Finish = ObjectUtils.defaultIfNull(latestSizeQuantityMap.get(33), 0) >= ObjectUtils.defaultIfNull(updateDetail.getSize33(), 0);
Boolean size34Finish = ObjectUtils.defaultIfNull(latestSizeQuantityMap.get(34), 0) >= ObjectUtils.defaultIfNull(updateDetail.getSize34(), 0);
Boolean size35Finish = ObjectUtils.defaultIfNull(latestSizeQuantityMap.get(35), 0) >= ObjectUtils.defaultIfNull(updateDetail.getSize35(), 0);
Boolean size36Finish = ObjectUtils.defaultIfNull(latestSizeQuantityMap.get(36), 0) >= ObjectUtils.defaultIfNull(updateDetail.getSize36(), 0);
Boolean size37Finish = ObjectUtils.defaultIfNull(latestSizeQuantityMap.get(37), 0) >= ObjectUtils.defaultIfNull(updateDetail.getSize37(), 0);
Boolean size38Finish = ObjectUtils.defaultIfNull(latestSizeQuantityMap.get(38), 0) >= ObjectUtils.defaultIfNull(updateDetail.getSize38(), 0);
Boolean size39Finish = ObjectUtils.defaultIfNull(latestSizeQuantityMap.get(39), 0) >= ObjectUtils.defaultIfNull(updateDetail.getSize39(), 0);
Boolean size40Finish = ObjectUtils.defaultIfNull(latestSizeQuantityMap.get(40), 0) >= ObjectUtils.defaultIfNull(updateDetail.getSize40(), 0);
Boolean size41Finish = ObjectUtils.defaultIfNull(latestSizeQuantityMap.get(41), 0) >= ObjectUtils.defaultIfNull(updateDetail.getSize41(), 0);
Boolean size42Finish = ObjectUtils.defaultIfNull(latestSizeQuantityMap.get(42), 0) >= ObjectUtils.defaultIfNull(updateDetail.getSize42(), 0);
Boolean size43Finish = ObjectUtils.defaultIfNull(latestSizeQuantityMap.get(43), 0) >= ObjectUtils.defaultIfNull(updateDetail.getSize43(), 0);
if (size30Finish && size31Finish && size32Finish && size33Finish && size34Finish && size35Finish && size36Finish && size37Finish && size38Finish
&& size39Finish && size40Finish && size41Finish && size42Finish && size43Finish) {
updateDetail.setDetailStatus(3);
}
return updateDetail;
}).collect(Collectors.toList());
this.demandDetailMapper.updateById(demandDetailListAfterUpdate);
Map<Long, List<StoreProductDemandDetail>> demandGroupMap = updateDemandDetailList.stream().collect(Collectors.groupingBy(StoreProductDemandDetail::getStoreProdDemandId));
List<Long> demandIdListAfterUpdate = new ArrayList<>();
demandGroupMap.forEach((demandId, tempDetailList) -> {
if (tempDetailList.stream().allMatch(x -> x.getDetailStatus() == 3)) {
demandIdListAfterUpdate.add(demandId);
}
});
if (CollectionUtils.isNotEmpty(demandIdListAfterUpdate)) {
this.demandMapper.updateStatusByIds(demandIdListAfterUpdate);
}
return count;
return unDeductMap;
}
/**
*
* 43
* 4300map
* map
*
* @param storeProdStorId
* @return
* @param size43Deduct 43
* @param size43DemandMap 43mapID
* @param demandDetail
* @return 43
*/
@Override
@Transactional(readOnly = true)
public StoreProdStorageResDTO selectByStoreProdStorId(Long storeProdStorId) {
// 档口商品入库
StoreProductStorage storage = Optional.ofNullable(this.storageMapper.selectOne(new LambdaQueryWrapper<StoreProductStorage>()
.eq(StoreProductStorage::getId, storeProdStorId).eq(StoreProductStorage::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("档口商品入库不存在!", HttpStatus.ERROR));
// 档口商品入库明细
List<StoreProductStorageDetail> storageDetailList = storageDetailMapper.selectList(new LambdaQueryWrapper<StoreProductStorageDetail>()
.eq(StoreProductStorageDetail::getStoreProdStorId, storeProdStorId).eq(StoreProductStorageDetail::getDelFlag, Constants.UNDELETED));
return BeanUtil.toBean(storage, StoreProdStorageResDTO.class)
.setDetailList(storageDetailList.stream().map(x -> BeanUtil.toBean(x, StoreProdStorageResDTO.StorageDetailDTO.class)).collect(Collectors.toList()));
}
/**
*
*
* @param storeProdStorageId
* @return
*/
@Override
@Transactional
public int deleteByStoreProdStorId(Long storeProdStorageId) {
// 档口商品入库
StoreProductStorage storage = Optional.ofNullable(this.storageMapper.selectOne(new LambdaQueryWrapper<StoreProductStorage>()
.eq(StoreProductStorage::getId, storeProdStorageId).eq(StoreProductStorage::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("档口商品入库不存在!", HttpStatus.ERROR));
storage.setDelFlag(Constants.DELETED);
int count = this.storageMapper.updateById(storage);
// 档口商品入库明细
List<StoreProductStorageDetail> storageDetailList = storageDetailMapper.selectList(new LambdaQueryWrapper<StoreProductStorageDetail>()
.eq(StoreProductStorageDetail::getStoreProdStorId, storeProdStorageId).eq(StoreProductStorageDetail::getDelFlag, Constants.UNDELETED));
storageDetailList.forEach(x -> x.setDelFlag(Constants.DELETED));
this.storageDetailMapper.updateById(storageDetailList);
// 减少档口商品库存
this.stockService.decreaseStock(storage.getStoreId(), storageDetailList.stream()
.map(x -> BeanUtil.toBean(x, StoreProdStockDTO.class)).collect(Collectors.toList()));
return count;
}
private Integer handleSize43RequireQuantity(Integer size43Deduct, Map<Long, Integer> size43DemandMap, StoreProductDemandDetail demandDetail) {
// 获取需求详情中的43码商品需求数量如果为null则默认为0
final Integer size43Demand = ObjectUtils.defaultIfNull(demandDetail.getSize43(), 0);
// 当43码商品的扣减数量小于0时
if (size43Deduct < 0) {
// 如果该商品的需求数量不为0则将需求数量的负值存入map中
if (size43Demand != 0) {
size43DemandMap.put(demandDetail.getId(), size43Demand * -1);
}
} else {
// 临时结果
// 临时结果,用于计算扣减数量与需求数量的差值
final int tempSize43Deduct = size43Deduct - size43Demand;
// 如果差值小于0则将差值存入map中
if (tempSize43Deduct < 0) {
size43DemandMap.put(demandDetail.getId(), tempSize43Deduct);
}
// 更新扣减数量
size43Deduct = tempSize43Deduct;
}
// 返回更新后的扣减数量
return size43Deduct;
}
@ -735,5 +826,4 @@ public class StoreProductStorageServiceImpl implements IStoreProductStorageServi
return size30Deduct;
}
}

View File

@ -124,9 +124,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
AND spc.store_prod_id = spcp.store_prod_id
AND spc.store_color_id = spcp.store_color_id
WHERE
spc.store_id = #{storeId}
<if test="prodArtNum != null and prodArtNum != ''"> and sp.prod_art_num like concat('%', #{prodArtNum}, '%')</if>
<if test="prodCateId != null "> and sp.prod_cate_id = #{prodCateId}</if>
spc.store_id = #{storeId} AND sp.prod_status = #{prodStatus}
<if test="prodArtNum != null and prodArtNum != ''"> and sp.prod_art_num like concat('%', #{prodArtNum}, '%')</if>
<if test="prodCateId != null "> and sp.prod_cate_id = #{prodCateId}</if>
ORDER BY
spc.create_time DESC
</select>
<select id="fuzzyQueryColorList" resultType="com.ruoyi.xkt.dto.storeProdColor.StoreProdColorResDTO">

View File

@ -198,6 +198,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="storeFactoryId != null "> and sf.id = #{storeFactoryId}</if>
<if test="remark != null and remark != ''"> and menu_name like concat('%', #{menuName}, '%')</if>
<if test="emergency != null "> and spdd.emergency = #{emergency}</if>
<if test="demandStatus != null "> and spd.demand_status = #{demandStatus}</if>
ORDER BY
spdd.create_time DESC
</select>

View File

@ -169,6 +169,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
del_flag = 0
AND store_id = #{storeId}
<if test="prodArtNum != null and prodArtNum != ''"> and prod_art_num like concat('%', #{prodArtNum}, '%')</if>
ORDER BY
create_time DESC
</select>
</mapper>

View File

@ -101,7 +101,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectStoragePage" parameterType="com.ruoyi.xkt.dto.storeProdStorage.StoreProdStoragePageDTO" resultType="com.ruoyi.xkt.dto.storeProdStorage.StoreProdStoragePageResDTO">
SELECT
sps.id AS storeProdStorId, sps.store_id, sps.`code`, sps.storage_type, sps.produce_amount, sps.quantity, sps.create_time, sps.operator_name
sps.id AS storeProdStorageId, sps.store_id, sps.`code`, sps.storage_type, sps.produce_amount, sps.quantity, sps.create_time, sps.operator_name
FROM
store_product_storage sps
<if test="prodArtNum != null and prodArtNum != ''"> join store_product_storage_detail spsd on sps.id = spsd.store_prod_stor_id </if>
@ -111,6 +111,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="storageType != null and storageType != ''"> and sps.storage_type = #{storageType} </if>
<if test="createTimeStart != null"> and sps.voucher_date &gt;= #{createTimeStart}</if>
<if test="createTimeEnd != null"> and sps.voucher_date &lt;= #{createTimeEnd}</if>
ORDER BY
sps.create_time DESC
</select>