出入库相关

This commit is contained in:
liuyingfang
2024-01-31 09:28:51 +08:00
parent 5a41510fd5
commit 69721b6040
15 changed files with 560 additions and 205 deletions

View File

@@ -4,12 +4,13 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.List;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import org.apache.poi.ss.formula.functions.T;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
@@ -52,4 +53,21 @@ public class ListUtil {
return integerList; return integerList;
} }
public static<T> String listChangeString(List<T> listString){
return listString.stream()
.map(Object::toString)
.collect(Collectors.joining(", "));
}
public static String mapToString(Map<String, String> map) {
StringBuilder sb = new StringBuilder();
for (Map.Entry<String, String> entry : map.entrySet()) {
sb.append(entry.getKey()).append("=").append(entry.getValue()).append("&");
}
if (!map.isEmpty()) {
sb.deleteCharAt(sb.length() - 1); // 删除最后一个"&"字符
}
return sb.toString();
}
} }

View File

@@ -42,159 +42,120 @@ public class TbOrderInfo implements Serializable {
private Integer id; private Integer id;
@Column(name = "`order_no`") @Column(name = "`order_no`")
@ApiModelProperty(value = "订单编号")
private String orderNo; private String orderNo;
@Column(name = "`settlement_amount`") @Column(name = "`settlement_amount`")
@ApiModelProperty(value = "商户结算金额")
private BigDecimal settlementAmount; private BigDecimal settlementAmount;
@Column(name = "`pack_fee`") @Column(name = "`pack_fee`")
@ApiModelProperty(value = "包装费")
private BigDecimal packFee; private BigDecimal packFee;
@Column(name = "`origin_amount`") @Column(name = "`origin_amount`")
@ApiModelProperty(value = "订单原金额")
private BigDecimal originAmount; private BigDecimal originAmount;
@Column(name = "`product_amount`") @Column(name = "`product_amount`")
@ApiModelProperty(value = "商品售价")
private BigDecimal productAmount; private BigDecimal productAmount;
@Column(name = "`amount`") @Column(name = "`amount`")
@ApiModelProperty(value = "最终金额---退单后,金额变动")
private BigDecimal amount; private BigDecimal amount;
@Column(name = "`refund_amount`") @Column(name = "`refund_amount`")
@ApiModelProperty(value = "退单金额")
private BigDecimal refundAmount; private BigDecimal refundAmount;
@Column(name = "`pay_amount`") @Column(name = "`pay_amount`")
@ApiModelProperty(value = "支付金额")
private BigDecimal payAmount; private BigDecimal payAmount;
@Column(name = "`freight_amount`") @Column(name = "`freight_amount`")
@ApiModelProperty(value = "订单邮递费用")
private BigDecimal freightAmount; private BigDecimal freightAmount;
@Column(name = "`cash_paid_amount`") @Column(name = "`cash_paid_amount`")
@ApiModelProperty(value = "现金支付金额")
private BigDecimal cashPaidAmount; private BigDecimal cashPaidAmount;
@Column(name = "`wx_paid_amount`") @Column(name = "`wx_paid_amount`")
@ApiModelProperty(value = "微信支付金额")
private BigDecimal wxPaidAmount; private BigDecimal wxPaidAmount;
@Column(name = "`ali_paid_amount`") @Column(name = "`ali_paid_amount`")
@ApiModelProperty(value = "支付宝支付金额")
private BigDecimal aliPaidAmount; private BigDecimal aliPaidAmount;
@Column(name = "`deposit_paid_amount`") @Column(name = "`deposit_paid_amount`")
@ApiModelProperty(value = "储值支付金额")
private BigDecimal depositPaidAmount; private BigDecimal depositPaidAmount;
@Column(name = "`bank_paid_amount`") @Column(name = "`bank_paid_amount`")
@ApiModelProperty(value = "银联支付金额")
private BigDecimal bankPaidAmount; private BigDecimal bankPaidAmount;
@Column(name = "`virtual_paid_amount`") @Column(name = "`virtual_paid_amount`")
@ApiModelProperty(value = "虚拟支付金额")
private BigDecimal virtualPaidAmount; private BigDecimal virtualPaidAmount;
@Column(name = "`other_paid_amount`") @Column(name = "`other_paid_amount`")
@ApiModelProperty(value = "其他支付金额")
private BigDecimal otherPaidAmount; private BigDecimal otherPaidAmount;
@Column(name = "`discount_amount`") @Column(name = "`discount_amount`")
@ApiModelProperty(value = "折扣金额")
private BigDecimal discountAmount; private BigDecimal discountAmount;
@Column(name = "`table_id`") @Column(name = "`table_id`")
@ApiModelProperty(value = "台桌Id")
private String tableId; private String tableId;
@Column(name = "`small_change`") @Column(name = "`small_change`")
@ApiModelProperty(value = "订单抹零")
private BigDecimal smallChange; private BigDecimal smallChange;
@Column(name = "`send_type`") @Column(name = "`send_type`")
@ApiModelProperty(value = "发货类型")
private String sendType; private String sendType;
@Column(name = "`order_type`") @Column(name = "`order_type`")
@ApiModelProperty(value = "订单类型-cash收银-miniapp小程序-offline线下")
private String orderType; private String orderType;
@Column(name = "`product_type`") @Column(name = "`product_type`")
@ApiModelProperty(value = "订单里面商品的类型")
private String productType; private String productType;
@Column(name = "`status`") @Column(name = "`status`")
@ApiModelProperty(value = "状态: unpaid 待支付unsend待发货 closed 订单完成 send 已发refunding申请退单refund退单cancelled取消订单merge合台")
private String status; private String status;
@Column(name = "`billing_id`") @Column(name = "`billing_id`")
@ApiModelProperty(value = "orderType为union-minor时parentId生效为其上级合单id")
private String billingId; private String billingId;
@Column(name = "`merchant_id`") @Column(name = "`merchant_id`")
@ApiModelProperty(value = "对于平台订单,是收款商户Id")
private String merchantId; private String merchantId;
@Column(name = "`shop_id`") @Column(name = "`shop_id`")
@ApiModelProperty(value = "店铺Id")
private String shopId; private String shopId;
@Column(name = "`is_vip`") @Column(name = "`is_vip`")
@ApiModelProperty(value = "是否vip订单")
private Integer isVip; private Integer isVip;
@Column(name = "`member_id`") @Column(name = "`member_id`")
@ApiModelProperty(value = "商户会员Id")
private String memberId; private String memberId;
@Column(name = "`user_id`") @Column(name = "`user_id`")
@ApiModelProperty(value = "用户Id")
private String userId; private String userId;
@Column(name = "`product_score`") @Column(name = "`product_score`")
@ApiModelProperty(value = "该订单商品赠送的积分")
private Integer productScore; private Integer productScore;
@Column(name = "`deduct_score`") @Column(name = "`deduct_score`")
@ApiModelProperty(value = "抵扣积分")
private Integer deductScore; private Integer deductScore;
@Column(name = "`user_coupon_id`") @Column(name = "`user_coupon_id`")
@ApiModelProperty(value = "用户使用的卡券")
private String userCouponId; private String userCouponId;
@Column(name = "`user_coupon_amount`") @Column(name = "`user_coupon_amount`")
@ApiModelProperty(value = "优惠券抵扣金额")
private BigDecimal userCouponAmount; private BigDecimal userCouponAmount;
@Column(name = "`is_master`") @Column(name = "`is_master`")
@ApiModelProperty(value = "是否主单")
private Integer isMaster; private Integer isMaster;
@Column(name = "`master_id`") @Column(name = "`master_id`")
@ApiModelProperty(value = "如果为退单时,主单号")
private String masterId; private String masterId;
@Column(name = "`refund_able`") @Column(name = "`refund_able`")
@ApiModelProperty(value = "是否支持退款1支持退单 0不支持退单")
private Integer refundAble; private Integer refundAble;
@Column(name = "`paid_time`") @Column(name = "`paid_time`")
@ApiModelProperty(value = "支付时间")
private Long paidTime; private Long paidTime;
@Column(name = "`is_effect`") @Column(name = "`is_effect`")
@ApiModelProperty(value = "是否生效,若订单合单之后,则原订单不会生效")
private Integer isEffect; private Integer isEffect;
@Column(name = "`is_group`") @Column(name = "`is_group`")
@ApiModelProperty(value = "是否合台")
private Integer isGroup; private Integer isGroup;
@Column(name = "`updated_at`") @Column(name = "`updated_at`")
@@ -202,15 +163,12 @@ public class TbOrderInfo implements Serializable {
private Long updatedAt; private Long updatedAt;
@Column(name = "`system_time`") @Column(name = "`system_time`")
@ApiModelProperty(value = "系统时间")
private Long systemTime; private Long systemTime;
@Column(name = "`created_at`") @Column(name = "`created_at`")
@ApiModelProperty(value = "createdAt")
private Long createdAt; private Long createdAt;
@Column(name = "`is_accepted`") @Column(name = "`is_accepted`")
@ApiModelProperty(value = "收银台是否已接单")
private Integer isAccepted; private Integer isAccepted;
public void copy(TbOrderInfo source){ public void copy(TbOrderInfo source){

View File

@@ -37,14 +37,14 @@ import javax.servlet.http.HttpServletResponse;
**/ **/
@RestController @RestController
@RequiredArgsConstructor @RequiredArgsConstructor
@Api(tags = "/orderInfo管理") @Api(tags = "/orderInfo")
@RequestMapping("/api/tbOrderInfo") @RequestMapping("/api/tbOrderInfo")
public class TbOrderInfoController { public class TbOrderInfoController {
private final TbOrderInfoService tbOrderInfoService; private final TbOrderInfoService tbOrderInfoService;
@Log("导出数据") @Log("")
@ApiOperation("导出数据") @ApiOperation("")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@PreAuthorize("@el.check('tbOrderInfo:list')") @PreAuthorize("@el.check('tbOrderInfo:list')")
public void exportTbOrderInfo(HttpServletResponse response, TbOrderInfoQueryCriteria criteria) throws IOException { public void exportTbOrderInfo(HttpServletResponse response, TbOrderInfoQueryCriteria criteria) throws IOException {
@@ -52,24 +52,24 @@ public class TbOrderInfoController {
} }
@GetMapping @GetMapping
@Log("查询/orderInfo") @Log("/orderInfo")
@ApiOperation("查询/orderInfo") @ApiOperation("/orderInfo")
@PreAuthorize("@el.check('tbOrderInfo:list')") @PreAuthorize("@el.check('tbOrderInfo:list')")
public ResponseEntity<Object> queryTbOrderInfo(TbOrderInfoQueryCriteria criteria, Pageable pageable){ public ResponseEntity<Object> queryTbOrderInfo(TbOrderInfoQueryCriteria criteria, Pageable pageable){
return new ResponseEntity<>(tbOrderInfoService.queryAll(criteria,pageable),HttpStatus.OK); return new ResponseEntity<>(tbOrderInfoService.queryAll(criteria,pageable),HttpStatus.OK);
} }
@PostMapping @PostMapping
@Log("新增/orderInfo") @Log("/orderInfo")
@ApiOperation("新增/orderInfo") @ApiOperation("/orderInfo")
@PreAuthorize("@el.check('tbOrderInfo:add')") @PreAuthorize("@el.check('tbOrderInfo:add')")
public ResponseEntity<Object> createTbOrderInfo(@Validated @RequestBody TbOrderInfo resources){ public ResponseEntity<Object> createTbOrderInfo(@Validated @RequestBody TbOrderInfo resources){
return new ResponseEntity<>(tbOrderInfoService.create(resources),HttpStatus.CREATED); return new ResponseEntity<>(tbOrderInfoService.create(resources),HttpStatus.CREATED);
} }
@PutMapping @PutMapping
@Log("修改/orderInfo") @Log("/orderInfo")
@ApiOperation("修改/orderInfo") @ApiOperation("/orderInfo")
@PreAuthorize("@el.check('tbOrderInfo:edit')") @PreAuthorize("@el.check('tbOrderInfo:edit')")
public ResponseEntity<Object> updateTbOrderInfo(@Validated @RequestBody TbOrderInfo resources){ public ResponseEntity<Object> updateTbOrderInfo(@Validated @RequestBody TbOrderInfo resources){
tbOrderInfoService.update(resources); tbOrderInfoService.update(resources);
@@ -77,8 +77,8 @@ public class TbOrderInfoController {
} }
@DeleteMapping @DeleteMapping
@Log("删除/orderInfo") @Log("/orderInfo")
@ApiOperation("删除/orderInfo") @ApiOperation("/orderInfo")
@PreAuthorize("@el.check('tbOrderInfo:del')") @PreAuthorize("@el.check('tbOrderInfo:del')")
public ResponseEntity<Object> deleteTbOrderInfo(@RequestBody Integer[] ids) { public ResponseEntity<Object> deleteTbOrderInfo(@RequestBody Integer[] ids) {
tbOrderInfoService.deleteAll(ids); tbOrderInfoService.deleteAll(ids);

View File

@@ -26,56 +26,56 @@ import javax.servlet.http.HttpServletResponse;
/** /**
* @website https://eladmin.vip * @website https://eladmin.vip
* @description 服务接口 * @description
* @author lyf * @author lyf
* @date 2023-11-22 * @date 2023-11-22
**/ **/
public interface TbOrderInfoService { public interface TbOrderInfoService {
/** /**
* 查询数据分页 *
* @param criteria 条件 * @param criteria
* @param pageable 分页参数 * @param pageable
* @return Map<String,Object> * @return Map<String,Object>
*/ */
Map<String,Object> queryAll(TbOrderInfoQueryCriteria criteria, Pageable pageable); Map<String,Object> queryAll(TbOrderInfoQueryCriteria criteria, Pageable pageable);
/** /**
* 查询所有数据不分页 * <EFBFBD>
* @param criteria 条件参数 * @param criteria
* @return List<TbOrderInfoDto> * @return List<TbOrderInfoDto>
*/ */
List<TbOrderInfoDto> queryAll(TbOrderInfoQueryCriteria criteria); List<TbOrderInfoDto> queryAll(TbOrderInfoQueryCriteria criteria);
/** /**
* 根据ID查询 * ID<EFBFBD><EFBFBD>ѯ
* @param id ID * @param id ID
* @return TbOrderInfoDto * @return TbOrderInfoDto
*/ */
TbOrderInfoDto findById(Integer id); TbOrderInfoDto findById(Integer id);
/** /**
* 创建 *
* @param resources / * @param resources /
* @return TbOrderInfoDto * @return TbOrderInfoDto
*/ */
TbOrderInfoDto create(TbOrderInfo resources); TbOrderInfoDto create(TbOrderInfo resources);
/** /**
* 编辑 * <EFBFBD>
* @param resources / * @param resources /
*/ */
void update(TbOrderInfo resources); void update(TbOrderInfo resources);
/** /**
* 多选删除 * <EFBFBD><EFBFBD>ѡɾ<EFBFBD><EFBFBD>
* @param ids / * @param ids /
*/ */
void deleteAll(Integer[] ids); void deleteAll(Integer[] ids);
/** /**
* 导出数据 *
* @param all 待导出的数据 * @param all
* @param response / * @param response /
* @throws IOException / * @throws IOException /
*/ */

View File

@@ -30,130 +30,129 @@ public class TbOrderInfoDto implements Serializable {
private Integer id; private Integer id;
/** 订单编号 */
private String orderNo; private String orderNo;
/** 商户结算金额 */ /** <EFBFBD>̻<EFBFBD><EFBFBD><EFBFBD> */
private BigDecimal settlementAmount; private BigDecimal settlementAmount;
/** 包装费 */ /** <EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD> */
private BigDecimal packFee; private BigDecimal packFee;
/** 订单原金额 */ /** ԭ<EFBFBD><EFBFBD><EFBFBD> */
private BigDecimal originAmount; private BigDecimal originAmount;
/** 商品售价 */ /** <EFBFBD><EFBFBD>Ʒ<EFBFBD>ۼ<EFBFBD> */
private BigDecimal productAmount; private BigDecimal productAmount;
/** 最终金额---退单后,金额变动 */ /** <EFBFBD><EFBFBD><EFBFBD>ս<EFBFBD><EFBFBD>---<2D>˵<EFBFBD><CBB5>󣬽<EFBFBD><F3A3ACBD> */
private BigDecimal amount; private BigDecimal amount;
/** 退单金额 */ /** <EFBFBD>˵ */
private BigDecimal refundAmount; private BigDecimal refundAmount;
/** 支付金额 */ /** ֧<EFBFBD> */
private BigDecimal payAmount; private BigDecimal payAmount;
/** 订单邮递费用 */ /** <EFBFBD>ʵݷ<EFBFBD><EFBFBD><EFBFBD> */
private BigDecimal freightAmount; private BigDecimal freightAmount;
/** 现金支付金额 */ /** <EFBFBD>ֽ<EFBFBD>֧<EFBFBD> */
private BigDecimal cashPaidAmount; private BigDecimal cashPaidAmount;
/** 微信支付金额 */ /** ΢<EFBFBD><EFBFBD>֧<EFBFBD> */
private BigDecimal wxPaidAmount; private BigDecimal wxPaidAmount;
/** 支付宝支付金额 */ /** ֧֧<EFBFBD> */
private BigDecimal aliPaidAmount; private BigDecimal aliPaidAmount;
/** 储值支付金额 */ /** <EFBFBD><EFBFBD>ֵ֧<EFBFBD> */
private BigDecimal depositPaidAmount; private BigDecimal depositPaidAmount;
/** 银联支付金额 */ /** ֧<EFBFBD> */
private BigDecimal bankPaidAmount; private BigDecimal bankPaidAmount;
/** 虚拟支付金额 */ /** ֧<EFBFBD> */
private BigDecimal virtualPaidAmount; private BigDecimal virtualPaidAmount;
/** 其他支付金额 */ /** ֧<EFBFBD> */
private BigDecimal otherPaidAmount; private BigDecimal otherPaidAmount;
/** 折扣金额 */ /** <EFBFBD>ۿ۽<EFBFBD><EFBFBD> */
private BigDecimal discountAmount; private BigDecimal discountAmount;
/** 台桌Id */ /** ̨<EFBFBD><EFBFBD>Id */
private String tableId; private String tableId;
/** 订单抹零 */ /** Ĩ<EFBFBD><EFBFBD> */
private BigDecimal smallChange; private BigDecimal smallChange;
/** 发货类型 */ /** */
private String sendType; private String sendType;
/** 订单类型-cash收银-miniapp小程序-offline线下 */ /** -cash-miniappС-offline */
private String orderType; private String orderType;
/** 订单里面商品的类型 */ /** <EFBFBD><EFBFBD>Ʒ<EFBFBD><EFBFBD> */
private String productType; private String productType;
/** 状态: unpaid 待支付unsend待发货 closed 订单完成 send 已发refunding申请退单refund退单cancelled取消订单merge合台 */ /** ״̬: unpaid <EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD>unsend<EFBFBD><EFBFBD> closed <EFBFBD><EFBFBD><EFBFBD> send <EFBFBD>ѷ<EFBFBD>refunding<EFBFBD>˵<EFBFBD>refund<EFBFBD>˵<EFBFBD>cancelledȡ<EFBFBD><EFBFBD>merge<EFBFBD><EFBFBD>̨ */
private String status; private String status;
/** orderTypeunion-minor时,parentId生效,为其上级合单id */ /** orderTypeΪunion-minorʱ<EFBFBD><EFBFBD>parentId<EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD><EFBFBD>ϵ<EFBFBD>id */
private String billingId; private String billingId;
/** 对于平台订单,是收款商户Id */ /** ƽ̨,<2C><><EFBFBD>տ<EFBFBD><D5BF>̻<EFBFBD>Id */
private String merchantId; private String merchantId;
/** 店铺Id */ /** Id */
private String shopId; private String shopId;
/** 是否vip订单 */ /** <EFBFBD>Ƿ<EFBFBD>vip */
private Integer isVip; private Integer isVip;
/** 商户会员Id */ /** <EFBFBD>̻<EFBFBD><EFBFBD><EFBFBD>ԱId */
private String memberId; private String memberId;
/** 用户Id */ /** <EFBFBD>û<EFBFBD>Id */
private String userId; private String userId;
/** 该订单商品赠送的积分 */ /** <EFBFBD>ö<EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD>͵Ļ<EFBFBD><EFBFBD><EFBFBD> */
private Integer productScore; private Integer productScore;
/** 抵扣积分 */ /** <EFBFBD>ֿۻ<EFBFBD><EFBFBD><EFBFBD> */
private Integer deductScore; private Integer deductScore;
/** 用户使用的卡券 */ /** <EFBFBD>û<EFBFBD>ʹ<EFBFBD>õĿ<EFBFBD>ȯ */
private String userCouponId; private String userCouponId;
/** 优惠券抵扣金额 */ /** <EFBFBD>Ż<EFBFBD>ȯ<EFBFBD>ֿ۽<EFBFBD><EFBFBD> */
private BigDecimal userCouponAmount; private BigDecimal userCouponAmount;
/** 是否主单 */ /** <EFBFBD>Ƿ<EFBFBD> */
private Integer isMaster; private Integer isMaster;
/** 如果为退单时,主单号 */ /** <EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>˵<EFBFBD>ʱ */
private String masterId; private String masterId;
/** 是否支持退款1支持退单 0不支持退单 */ /** <EFBFBD>Ƿ<EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD>˿1֧<EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD> 0<><30>֧<EFBFBD><D6A7><EFBFBD>˵<EFBFBD> */
private Integer refundAble; private Integer refundAble;
/** 支付时间 */ /** ֧<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> */
private Long paidTime; private Long paidTime;
/** 是否生效,若订单合单之后,则原订单不会生效 */ /** <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD>ϵ<EFBFBD>֮ԭ<EFBFBD><EFBFBD>Ч */
private Integer isEffect; private Integer isEffect;
/** 是否合台 */ /** <EFBFBD>Ƿ<EFBFBD><EFBFBD>̨ */
private Integer isGroup; private Integer isGroup;
private Long updatedAt; private Long updatedAt;
/** 系统时间 */ /** ϵͳʱ<EFBFBD><EFBFBD> */
private Long systemTime; private Long systemTime;
private Long createdAt; private Long createdAt;
/** 收银台是否已接单 */ /** ̨<EFBFBD>Ƿ<EFBFBD><EFBFBD>ѽӵ<EFBFBD> */
private Integer isAccepted; private Integer isAccepted;
} }

View File

@@ -39,7 +39,7 @@ import java.util.LinkedHashMap;
/** /**
* @website https://eladmin.vip * @website https://eladmin.vip
* @description 服务实现 * @description
* @author lyf * @author lyf
* @date 2023-11-22 * @date 2023-11-22
**/ **/
@@ -93,54 +93,54 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService {
@Override @Override
public void download(List<TbOrderInfoDto> all, HttpServletResponse response) throws IOException { public void download(List<TbOrderInfoDto> all, HttpServletResponse response) throws IOException {
List<Map<String, Object>> list = new ArrayList<>(); // List<Map<String, Object>> list = new ArrayList<>();
for (TbOrderInfoDto tbOrderInfo : all) { // for (TbOrderInfoDto tbOrderInfo : all) {
Map<String,Object> map = new LinkedHashMap<>(); // Map<String,Object> map = new LinkedHashMap<>();
map.put("订单编号", tbOrderInfo.getOrderNo()); // map.put("<22><><EFBFBD>", tbOrderInfo.getOrderNo());
map.put("商户结算金额", tbOrderInfo.getSettlementAmount()); // map.put("<22>̻<EFBFBD><CCBB><EFBFBD>", tbOrderInfo.getSettlementAmount());
map.put("包装费", tbOrderInfo.getPackFee()); // map.put("<22><>װ<EFBFBD><D7B0>", tbOrderInfo.getPackFee());
map.put("订单原金额", tbOrderInfo.getOriginAmount()); // map.put("ԭ<><D4AD><EFBFBD>", tbOrderInfo.getOriginAmount());
map.put("商品售价", tbOrderInfo.getProductAmount()); // map.put("<22><>Ʒ<EFBFBD>ۼ<EFBFBD>", tbOrderInfo.getProductAmount());
map.put("最终金额---退单后,金额变动", tbOrderInfo.getAmount()); // map.put("<22><><EFBFBD>ս<EFBFBD><D5BD>---<2D>˵<EFBFBD><CBB5>󣬽<EFBFBD><F3A3ACBD>䶯", tbOrderInfo.getAmount());
map.put("退单金额", tbOrderInfo.getRefundAmount()); // map.put("<22>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>", tbOrderInfo.getRefundAmount());
map.put("支付金额", tbOrderInfo.getPayAmount()); // map.put("֧<><D6A7><EFBFBD><EFBFBD><EFBFBD>", tbOrderInfo.getPayAmount());
map.put("订单邮递费用", tbOrderInfo.getFreightAmount()); // map.put("<22><><EFBFBD><EFBFBD><EFBFBD>ʵݷ<CAB5><DDB7><EFBFBD>", tbOrderInfo.getFreightAmount());
map.put("现金支付金额", tbOrderInfo.getCashPaidAmount()); // map.put("<22>ֽ<EFBFBD>֧<EFBFBD><D6A7><EFBFBD><EFBFBD><EFBFBD>", tbOrderInfo.getCashPaidAmount());
map.put("微信支付金额", tbOrderInfo.getWxPaidAmount()); // map.put("΢<><CEA2>֧<EFBFBD><D6A7><EFBFBD><EFBFBD><EFBFBD>", tbOrderInfo.getWxPaidAmount());
map.put("支付宝支付金额", tbOrderInfo.getAliPaidAmount()); // map.put("֧<><D6A7><EFBFBD><EFBFBD>֧<EFBFBD><D6A7><EFBFBD><EFBFBD><EFBFBD>", tbOrderInfo.getAliPaidAmount());
map.put("储值支付金额", tbOrderInfo.getDepositPaidAmount()); // map.put("<22><>ֵ֧<D6B5><D6A7><EFBFBD><EFBFBD><EFBFBD>", tbOrderInfo.getDepositPaidAmount());
map.put("银联支付金额", tbOrderInfo.getBankPaidAmount()); // map.put("<22><><EFBFBD><EFBFBD>֧<EFBFBD><D6A7><EFBFBD><EFBFBD><EFBFBD>", tbOrderInfo.getBankPaidAmount());
map.put("虚拟支付金额", tbOrderInfo.getVirtualPaidAmount()); // map.put("<22><><EFBFBD><EFBFBD>֧<EFBFBD><D6A7><EFBFBD><EFBFBD><EFBFBD>", tbOrderInfo.getVirtualPaidAmount());
map.put("其他支付金额", tbOrderInfo.getOtherPaidAmount()); // map.put("<22><><EFBFBD><EFBFBD>֧<EFBFBD><D6A7><EFBFBD><EFBFBD><EFBFBD>", tbOrderInfo.getOtherPaidAmount());
map.put("折扣金额", tbOrderInfo.getDiscountAmount()); // map.put("<22>ۿ۽<DBBF><DBBD>", tbOrderInfo.getDiscountAmount());
map.put("台桌Id", tbOrderInfo.getTableId()); // map.put("̨<><CCA8>Id", tbOrderInfo.getTableId());
map.put("订单抹零", tbOrderInfo.getSmallChange()); // map.put("<22><><EFBFBD><EFBFBD>Ĩ<EFBFBD><C4A8>", tbOrderInfo.getSmallChange());
map.put("发货类型", tbOrderInfo.getSendType()); // map.put("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", tbOrderInfo.getSendType());
map.put("订单类型-cash收银-miniapp小程序-offline线下", tbOrderInfo.getOrderType()); // map.put("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-cash<EFBFBD><EFBFBD><EFBFBD><EFBFBD>-miniappС<EFBFBD><EFBFBD><EFBFBD><EFBFBD>-offline<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", tbOrderInfo.getOrderType());
map.put("订单里面商品的类型", tbOrderInfo.getProductType()); // map.put("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", tbOrderInfo.getProductType());
map.put("状态: unpaid 待支付unsend待发货 closed 订单完成 send 已发refunding申请退单refund退单cancelled取消订单merge合台", tbOrderInfo.getStatus()); // map.put("״̬: unpaid <EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD>unsend<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> closed <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> send <EFBFBD>ѷ<EFBFBD>refunding<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>refund<EFBFBD>˵<EFBFBD>cancelledȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>merge<EFBFBD><EFBFBD>̨", tbOrderInfo.getStatus());
map.put("orderTypeunion-minor时,parentId生效为其上级合单id", tbOrderInfo.getBillingId()); // map.put("orderTypeΪunion-minorʱ<EFBFBD><EFBFBD>parentId<EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD><EFBFBD>ϵ<EFBFBD>id", tbOrderInfo.getBillingId());
map.put("对于平台订单,是收款商户Id", tbOrderInfo.getMerchantId()); // map.put("<22><><EFBFBD><EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD>,<2C><><EFBFBD>տ<EFBFBD><D5BF>̻<EFBFBD>Id", tbOrderInfo.getMerchantId());
map.put("店铺Id", tbOrderInfo.getShopId()); // map.put("<22><><EFBFBD><EFBFBD>Id", tbOrderInfo.getShopId());
map.put("是否vip订单", tbOrderInfo.getIsVip()); // map.put("<22>Ƿ<EFBFBD>vip<69><70><EFBFBD><EFBFBD>", tbOrderInfo.getIsVip());
map.put("商户会员Id", tbOrderInfo.getMemberId()); // map.put("<22>̻<EFBFBD><CCBB><EFBFBD>ԱId", tbOrderInfo.getMemberId());
map.put("用户Id", tbOrderInfo.getUserId()); // map.put("<22>û<EFBFBD>Id", tbOrderInfo.getUserId());
map.put("该订单商品赠送的积分", tbOrderInfo.getProductScore()); // map.put("<22>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD>͵Ļ<CDB5><C4BB><EFBFBD>", tbOrderInfo.getProductScore());
map.put("抵扣积分", tbOrderInfo.getDeductScore()); // map.put("<22>ֿۻ<D6BF><DBBB><EFBFBD>", tbOrderInfo.getDeductScore());
map.put("用户使用的卡券", tbOrderInfo.getUserCouponId()); // map.put("<22>û<EFBFBD>ʹ<EFBFBD>õĿ<C3B5>ȯ", tbOrderInfo.getUserCouponId());
map.put("优惠券抵扣金额", tbOrderInfo.getUserCouponAmount()); // map.put("<22>Ż<EFBFBD>ȯ<EFBFBD>ֿ۽<D6BF><DBBD>", tbOrderInfo.getUserCouponAmount());
map.put("是否主单", tbOrderInfo.getIsMaster()); // map.put("<22>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>", tbOrderInfo.getIsMaster());
map.put("如果为退单时,主单号", tbOrderInfo.getMasterId()); // map.put("<22><><EFBFBD>Ϊ<EFBFBD>˵<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", tbOrderInfo.getMasterId());
map.put("是否支持退款1支持退单 0不支持退单", tbOrderInfo.getRefundAble()); // map.put("<22>Ƿ<EFBFBD>֧<EFBFBD><D6A7><EFBFBD>˿1֧<31><D6A7><EFBFBD>˵<EFBFBD><CBB5><EFBFBD> 0<><30>֧<EFBFBD><D6A7><EFBFBD>˵<EFBFBD>", tbOrderInfo.getRefundAble());
map.put("支付时间", tbOrderInfo.getPaidTime()); // map.put("֧<><D6A7>ʱ<EFBFBD><CAB1>", tbOrderInfo.getPaidTime());
map.put("是否生效,若订单合单之后,则原订单不会生效", tbOrderInfo.getIsEffect()); // map.put("<22>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч", tbOrderInfo.getIsEffect());
map.put("是否合台", tbOrderInfo.getIsGroup()); // map.put("<22>Ƿ<EFBFBD><C7B7>̨", tbOrderInfo.getIsGroup());
map.put(" updatedAt", tbOrderInfo.getUpdatedAt()); // map.put(" updatedAt", tbOrderInfo.getUpdatedAt());
map.put("系统时间", tbOrderInfo.getSystemTime()); // map.put("ϵͳʱ<CDB3><CAB1>", tbOrderInfo.getSystemTime());
map.put(" createdAt", tbOrderInfo.getCreatedAt()); // map.put(" createdAt", tbOrderInfo.getCreatedAt());
map.put("收银台是否已接单", tbOrderInfo.getIsAccepted()); // map.put("<22><><EFBFBD><EFBFBD>̨<EFBFBD>Ƿ<EFBFBD><C7B7>ѽӵ<D1BD>", tbOrderInfo.getIsAccepted());
list.add(map); // list.add(map);
} // }
FileUtil.downloadExcel(list, response); FileUtil.downloadExcel(new ArrayList<>(), response);
} }
} }

View File

@@ -19,6 +19,8 @@ import lombok.Data;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.bean.copier.CopyOptions;
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.annotations.DynamicInsert;
import javax.persistence.*; import javax.persistence.*;
import javax.validation.constraints.*; import javax.validation.constraints.*;
@@ -44,11 +46,11 @@ public class TbProduct implements Serializable {
@Column(name = "`source_path`") @Column(name = "`source_path`")
@ApiModelProperty(value = "商品来源 NORMAL普通商品 --,SCORE积分商品") @ApiModelProperty(value = "商品来源 NORMAL普通商品 --,SCORE积分商品")
private String sourcePath; private String sourcePath="NORMAL";
@Column(name = "`merchant_id`") @Column(name = "`merchant_id`")
@ApiModelProperty(value = "商户Id") @ApiModelProperty(value = "商户Id")
private String merchantId; private String merchantId = "PLANT_ID";
@Column(name = "`shop_id`") @Column(name = "`shop_id`")
@ApiModelProperty(value = "店铺id") @ApiModelProperty(value = "店铺id")
@@ -60,7 +62,7 @@ public class TbProduct implements Serializable {
@Column(name = "`type`") @Column(name = "`type`")
@ApiModelProperty(value = "商品类型(属性):REAL- 实物商品 VIR---虚拟商品") @ApiModelProperty(value = "商品类型(属性):REAL- 实物商品 VIR---虚拟商品")
private String type; private String type = "REAL";
@Column(name = "`pack_fee`") @Column(name = "`pack_fee`")
@ApiModelProperty(value = "包装费") @ApiModelProperty(value = "包装费")
@@ -121,11 +123,11 @@ public class TbProduct implements Serializable {
@Column(name = "`sort`") @Column(name = "`sort`")
@ApiModelProperty(value = "排序") @ApiModelProperty(value = "排序")
private Integer sort; private Integer sort = 0;
@Column(name = "`limit_number`") @Column(name = "`limit_number`")
@ApiModelProperty(value = "0-不限购") @ApiModelProperty(value = "0-不限购")
private Integer limitNumber; private Integer limitNumber = 0;
@Column(name = "`product_score`") @Column(name = "`product_score`")
@ApiModelProperty(value = "商品赚送积分") @ApiModelProperty(value = "商品赚送积分")
@@ -134,7 +136,7 @@ public class TbProduct implements Serializable {
@Column(name = "`status`",nullable = false) @Column(name = "`status`",nullable = false)
@NotNull @NotNull
@ApiModelProperty(value = "0--待审核 1审核通过 -1审核失败 -2违规下架") @ApiModelProperty(value = "0--待审核 1审核通过 -1审核失败 -2违规下架")
private Integer status; private Integer status = 0;
@Column(name = "`fail_msg`") @Column(name = "`fail_msg`")
@ApiModelProperty(value = "审核失败原因") @ApiModelProperty(value = "审核失败原因")
@@ -142,11 +144,11 @@ public class TbProduct implements Serializable {
@Column(name = "`is_recommend`") @Column(name = "`is_recommend`")
@ApiModelProperty(value = "是否推荐,店铺推荐展示") @ApiModelProperty(value = "是否推荐,店铺推荐展示")
private Integer isRecommend; private Integer isRecommend = 0;
@Column(name = "`is_hot`") @Column(name = "`is_hot`")
@ApiModelProperty(value = "是否热销") @ApiModelProperty(value = "是否热销")
private Integer isHot; private Integer isHot = 0;
@Column(name = "`is_new`") @Column(name = "`is_new`")
@ApiModelProperty(value = "是否新品") @ApiModelProperty(value = "是否新品")
@@ -154,11 +156,11 @@ public class TbProduct implements Serializable {
@Column(name = "`is_on_sale`") @Column(name = "`is_on_sale`")
@ApiModelProperty(value = "是否促销1-是0-否") @ApiModelProperty(value = "是否促销1-是0-否")
private Integer isOnSale; private Integer isOnSale = 0;
@Column(name = "`is_show`") @Column(name = "`is_show`")
@ApiModelProperty(value = "是否展示0-下架 1上架---废弃") @ApiModelProperty(value = "是否展示0-下架 1上架---废弃")
private Integer isShow; private Integer isShow = 0;
@Column(name = "`type_enum`") @Column(name = "`type_enum`")
@ApiModelProperty(value = "商品规格0-单规格 1多规格") @ApiModelProperty(value = "商品规格0-单规格 1多规格")
@@ -166,7 +168,7 @@ public class TbProduct implements Serializable {
@Column(name = "`is_distribute`") @Column(name = "`is_distribute`")
@ApiModelProperty(value = "是否独立分销") @ApiModelProperty(value = "是否独立分销")
private Integer isDistribute; private Integer isDistribute = 0;
@Column(name = "`is_del`",nullable = false) @Column(name = "`is_del`",nullable = false)
@NotNull @NotNull
@@ -175,11 +177,11 @@ public class TbProduct implements Serializable {
@Column(name = "`is_stock`") @Column(name = "`is_stock`")
@ApiModelProperty(value = "是否开启库存") @ApiModelProperty(value = "是否开启库存")
private Integer isStock; private Integer isStock = 1;
@Column(name = "`is_pause_sale`") @Column(name = "`is_pause_sale`")
@ApiModelProperty(value = "是否暂停销售") @ApiModelProperty(value = "是否暂停销售")
private Integer isPauseSale; private Integer isPauseSale = 0;
@Column(name = "`is_free_freight`",nullable = false) @Column(name = "`is_free_freight`",nullable = false)
@NotNull @NotNull
@@ -196,11 +198,11 @@ public class TbProduct implements Serializable {
@Column(name = "`strategy_id`") @Column(name = "`strategy_id`")
@ApiModelProperty(value = "策略Id") @ApiModelProperty(value = "策略Id")
private Integer strategyId; private Integer strategyId = 1;
@Column(name = "`is_vip`") @Column(name = "`is_vip`")
@ApiModelProperty(value = "vip专属") @ApiModelProperty(value = "vip专属")
private Integer isVip; private Integer isVip = 0;
@Column(name = "`is_delete`",nullable = false) @Column(name = "`is_delete`",nullable = false)
@NotNull @NotNull
@@ -221,43 +223,43 @@ public class TbProduct implements Serializable {
@Column(name = "`base_sales_number`") @Column(name = "`base_sales_number`")
@ApiModelProperty(value = "基础出售数量") @ApiModelProperty(value = "基础出售数量")
private Double baseSalesNumber; private Double baseSalesNumber =0.00;
@Column(name = "`real_sales_number`") @Column(name = "`real_sales_number`")
@ApiModelProperty(value = "实际销量") @ApiModelProperty(value = "实际销量")
private Integer realSalesNumber; private Integer realSalesNumber = 0;
@Column(name = "`sales_number`") @Column(name = "`sales_number`")
@ApiModelProperty(value = "合计销量") @ApiModelProperty(value = "合计销量")
private Integer salesNumber; private Integer salesNumber = 0;
@Column(name = "`thumb_count`") @Column(name = "`thumb_count`")
@ApiModelProperty(value = "点赞次数") @ApiModelProperty(value = "点赞次数")
private Integer thumbCount; private Integer thumbCount = 0;
@Column(name = "`store_count`") @Column(name = "`store_count`")
@ApiModelProperty(value = "收藏次数") @ApiModelProperty(value = "收藏次数")
private Integer storeCount; private Integer storeCount = 0;
@Column(name = "`furnish_meal`") @Column(name = "`furnish_meal`")
@ApiModelProperty(value = "支持堂食") @ApiModelProperty(value = "支持堂食")
private Integer furnishMeal; private Integer furnishMeal = 0;
@Column(name = "`furnish_express`") @Column(name = "`furnish_express`")
@ApiModelProperty(value = "支持配送") @ApiModelProperty(value = "支持配送")
private Integer furnishExpress; private Integer furnishExpress = 0;
@Column(name = "`furnish_draw`") @Column(name = "`furnish_draw`")
@ApiModelProperty(value = "支持自提") @ApiModelProperty(value = "支持自提")
private Integer furnishDraw; private Integer furnishDraw = 0;
@Column(name = "`furnish_vir`") @Column(name = "`furnish_vir`")
@ApiModelProperty(value = "支持虚拟") @ApiModelProperty(value = "支持虚拟")
private Integer furnishVir; private Integer furnishVir = 0;
@Column(name = "`is_combo`") @Column(name = "`is_combo`")
@ApiModelProperty(value = "是否套餐") @ApiModelProperty(value = "是否套餐")
private Integer isCombo; private Integer isCombo =0;
@Column(name = "`group_snap`") @Column(name = "`group_snap`")
@ApiModelProperty(value = "套餐内容") @ApiModelProperty(value = "套餐内容")
@@ -265,19 +267,19 @@ public class TbProduct implements Serializable {
@Column(name = "`is_show_cash`") @Column(name = "`is_show_cash`")
@ApiModelProperty(value = "isShowCash") @ApiModelProperty(value = "isShowCash")
private Integer isShowCash; private Integer isShowCash =0;
@Column(name = "`is_show_mall`") @Column(name = "`is_show_mall`")
@ApiModelProperty(value = "isShowMall") @ApiModelProperty(value = "isShowMall")
private Integer isShowMall; private Integer isShowMall = 0;
@Column(name = "`is_need_examine`") @Column(name = "`is_need_examine`")
@ApiModelProperty(value = "是否需要审核") @ApiModelProperty(value = "是否需要审核")
private Integer isNeedExamine; private Integer isNeedExamine = 0;
@Column(name = "`show_on_mall_status`") @Column(name = "`show_on_mall_status`")
@ApiModelProperty(value = "线上商城展示状态0待审核 -1 异常 1正常") @ApiModelProperty(value = "线上商城展示状态0待审核 -1 异常 1正常")
private Integer showOnMallStatus; private Integer showOnMallStatus = 1;
@Column(name = "`show_on_mall_time`") @Column(name = "`show_on_mall_time`")
@ApiModelProperty(value = "提交审核时间") @ApiModelProperty(value = "提交审核时间")
@@ -289,7 +291,7 @@ public class TbProduct implements Serializable {
@Column(name = "`enable_label`") @Column(name = "`enable_label`")
@ApiModelProperty(value = "使用标签打印 选择 是 并在 前台>本机设置 勾选打印标签后,收银完成后会自动打印对应数量的标签数") @ApiModelProperty(value = "使用标签打印 选择 是 并在 前台>本机设置 勾选打印标签后,收银完成后会自动打印对应数量的标签数")
private Integer enableLabel; private Integer enableLabel = 0;
@Column(name = "`tax_config_id`") @Column(name = "`tax_config_id`")
@ApiModelProperty(value = "税率") @ApiModelProperty(value = "税率")

View File

@@ -16,6 +16,7 @@
package me.zhengjie.modules.productInfo.product.service.impl; package me.zhengjie.modules.productInfo.product.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import me.zhengjie.exception.BadRequestException; import me.zhengjie.exception.BadRequestException;
import me.zhengjie.modules.productInfo.product.domain.TbProduct; import me.zhengjie.modules.productInfo.product.domain.TbProduct;
@@ -217,7 +218,7 @@ public class TbProductServiceImpl implements TbProductService {
public Object create(TbProductVo resources) { public Object create(TbProductVo resources) {
TbProduct product = new TbProduct(); TbProduct product = new TbProduct();
//组装 //组装
BeanUtils.copyProperties(resources, product); BeanUtil.copyProperties(resources,product, CopyOptions.create().setIgnoreNullValue(true));
product.setCategoryId(String.valueOf(resources.getCategoryId())); product.setCategoryId(String.valueOf(resources.getCategoryId()));
product.setIsDel(0); product.setIsDel(0);
product.setIsDelete(0); product.setIsDelete(0);
@@ -257,10 +258,6 @@ public class TbProductServiceImpl implements TbProductService {
} }
public static void main(String[] args) {
System.out.println(UUID.randomUUID().toString().substring(0, 16));
}
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)

View File

@@ -58,11 +58,11 @@ public class TbProductSku implements Serializable {
@Column(name = "`origin_price`") @Column(name = "`origin_price`")
@ApiModelProperty(value = "原价") @ApiModelProperty(value = "原价")
private BigDecimal originPrice; private BigDecimal originPrice = new BigDecimal("0.00");
@Column(name = "`cost_price`") @Column(name = "`cost_price`")
@ApiModelProperty(value = "成本价") @ApiModelProperty(value = "成本价")
private BigDecimal costPrice; private BigDecimal costPrice = new BigDecimal("0.00");
@Column(name = "`member_price`") @Column(name = "`member_price`")
@ApiModelProperty(value = "会员价") @ApiModelProperty(value = "会员价")
@@ -70,11 +70,11 @@ public class TbProductSku implements Serializable {
@Column(name = "`meal_price`") @Column(name = "`meal_price`")
@ApiModelProperty(value = "mealPrice") @ApiModelProperty(value = "mealPrice")
private BigDecimal mealPrice; private BigDecimal mealPrice = new BigDecimal("0.00");
@Column(name = "`sale_price`") @Column(name = "`sale_price`")
@ApiModelProperty(value = "售价") @ApiModelProperty(value = "售价")
private BigDecimal salePrice; private BigDecimal salePrice = new BigDecimal("0.00");
@Column(name = "`guide_price`") @Column(name = "`guide_price`")
@ApiModelProperty(value = "进货参考价") @ApiModelProperty(value = "进货参考价")
@@ -86,7 +86,7 @@ public class TbProductSku implements Serializable {
@Column(name = "`stock_number`") @Column(name = "`stock_number`")
@ApiModelProperty(value = "库存数量") @ApiModelProperty(value = "库存数量")
private Double stockNumber; private Double stockNumber = 0.00;
@Column(name = "`spec_snap`") @Column(name = "`spec_snap`")
@ApiModelProperty(value = "标签镜像") @ApiModelProperty(value = "标签镜像")
@@ -110,7 +110,7 @@ public class TbProductSku implements Serializable {
@Column(name = "`real_sales_number`") @Column(name = "`real_sales_number`")
@ApiModelProperty(value = "销量") @ApiModelProperty(value = "销量")
private Double realSalesNumber; private Double realSalesNumber = 0.00;
@Column(name = "`first_shared`") @Column(name = "`first_shared`")
@ApiModelProperty(value = "一级分销金额") @ApiModelProperty(value = "一级分销金额")

View File

@@ -68,7 +68,9 @@ public class TbProductStockDetail implements Serializable {
@Column(name = "`shop_id`") @Column(name = "`shop_id`")
@ApiModelProperty(value = "店铺Id") @ApiModelProperty(value = "店铺Id")
private String shopId; private String shopId;
/**
* 操作日志id
*/
@Column(name = "`record_id`") @Column(name = "`record_id`")
@ApiModelProperty(value = "recordId") @ApiModelProperty(value = "recordId")
private String recordId; private String recordId;

View File

@@ -18,6 +18,7 @@ package me.zhengjie.modules.productInfo.productStockOperate.rest;
import me.zhengjie.annotation.Log; import me.zhengjie.annotation.Log;
import me.zhengjie.modules.productInfo.productStockOperate.domain.TbProductStockOperate; import me.zhengjie.modules.productInfo.productStockOperate.domain.TbProductStockOperate;
import me.zhengjie.modules.productInfo.productStockOperate.service.TbProductStockOperateService; import me.zhengjie.modules.productInfo.productStockOperate.service.TbProductStockOperateService;
import me.zhengjie.modules.productInfo.productStockOperate.service.dto.OutAndOnDto;
import me.zhengjie.modules.productInfo.productStockOperate.service.dto.TbProductStockOperateQueryCriteria; import me.zhengjie.modules.productInfo.productStockOperate.service.dto.TbProductStockOperateQueryCriteria;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -56,6 +57,17 @@ public class TbProductStockOperateController {
return new ResponseEntity<>(tbProductStockOperateService.queryAllPage(criteria),HttpStatus.OK); return new ResponseEntity<>(tbProductStockOperateService.queryAllPage(criteria),HttpStatus.OK);
} }
@GetMapping("/{id}")
public ResponseEntity<Object> queryById(@PathVariable Integer id){
return new ResponseEntity<>(tbProductStockOperateService.findById(id),HttpStatus.OK);
}
// @GetMapping("/nullify/{id}")
// public ResponseEntity<Object> nullify(@PathVariable Integer id){
// return new ResponseEntity<>(tbProductStockOperateService.,HttpStatus.OK);
// }
@PostMapping @PostMapping
@Log("新增/product/StockOperate") @Log("新增/product/StockOperate")
@ApiOperation("新增/product/StockOperate") @ApiOperation("新增/product/StockOperate")
@@ -64,6 +76,14 @@ public class TbProductStockOperateController {
return new ResponseEntity<>(tbProductStockOperateService.create(resources),HttpStatus.CREATED); return new ResponseEntity<>(tbProductStockOperateService.create(resources),HttpStatus.CREATED);
} }
@PostMapping("/outAndOn")
@Log("新增/product/StockOperate")
@ApiOperation("新增/product/StockOperate")
@PreAuthorize("@el.check('tbProductStockOperate:add')")
public ResponseEntity<Object> createOutAndONOperate(@RequestBody OutAndOnDto outAndOnDto){
return new ResponseEntity<>(tbProductStockOperateService.createOutAndONOperate(outAndOnDto),HttpStatus.CREATED);
}
@PutMapping @PutMapping
@Log("修改/product/StockOperate") @Log("修改/product/StockOperate")
@ApiOperation("修改/product/StockOperate") @ApiOperation("修改/product/StockOperate")

View File

@@ -16,6 +16,8 @@
package me.zhengjie.modules.productInfo.productStockOperate.service; package me.zhengjie.modules.productInfo.productStockOperate.service;
import me.zhengjie.modules.productInfo.productStockOperate.domain.TbProductStockOperate; import me.zhengjie.modules.productInfo.productStockOperate.domain.TbProductStockOperate;
import me.zhengjie.modules.productInfo.productStockOperate.service.VO.ProductStockOperateVO;
import me.zhengjie.modules.productInfo.productStockOperate.service.dto.OutAndOnDto;
import me.zhengjie.modules.productInfo.productStockOperate.service.dto.TbProductStockOperateDto; import me.zhengjie.modules.productInfo.productStockOperate.service.dto.TbProductStockOperateDto;
import me.zhengjie.modules.productInfo.productStockOperate.service.dto.TbProductStockOperateQueryCriteria; import me.zhengjie.modules.productInfo.productStockOperate.service.dto.TbProductStockOperateQueryCriteria;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
@@ -35,7 +37,6 @@ public interface TbProductStockOperateService {
/** /**
* 查询数据分页 * 查询数据分页
* @param criteria 条件 * @param criteria 条件
* @param pageable 分页参数
* @return Map<String,Object> * @return Map<String,Object>
*/ */
Map<String,Object> queryAllPage(TbProductStockOperateQueryCriteria criteria); Map<String,Object> queryAllPage(TbProductStockOperateQueryCriteria criteria);
@@ -47,12 +48,17 @@ public interface TbProductStockOperateService {
*/ */
List<TbProductStockOperateDto> queryAll(TbProductStockOperateQueryCriteria criteria); List<TbProductStockOperateDto> queryAll(TbProductStockOperateQueryCriteria criteria);
/**
* 作废
*/
void nullify();
/** /**
* 根据ID查询 * 根据ID查询
* @param id ID * @param id ID
* @return TbProductStockOperateDto * @return TbProductStockOperateDto
*/ */
TbProductStockOperateDto findById(Integer id); ProductStockOperateVO findById(Integer id);
/** /**
* 创建 * 创建
@@ -61,6 +67,9 @@ public interface TbProductStockOperateService {
*/ */
TbProductStockOperateDto create(TbProductStockOperate resources); TbProductStockOperateDto create(TbProductStockOperate resources);
OutAndOnDto createOutAndONOperate(OutAndOnDto resources);
/** /**
* 编辑 * 编辑
* @param resources / * @param resources /

View File

@@ -0,0 +1,145 @@
package me.zhengjie.modules.productInfo.productStockOperate.service.dto;
import lombok.Data;
import lombok.NonNull;
import java.math.BigDecimal;
import java.util.List;
/**
* @author 出库入库Dto
*/
public class OutAndOnDto {
/**
* 批号
*/
private String batchNumber;
/**
* 商品list
*/
private List<Object> list;
/**
* 实收金额
*/
private BigDecimal paidAmount;
/**
* 实收时间
*/
private Long paidAt;
/**
* 供货商id
*/
private String purveyorId;
/**
* 供货商名称
*/
private String purveyorName;
/**
* 备注
*/
private String remark;
/**
* 出库时间
*/
private Long time;
/**
* 应收金额
*/
private BigDecimal totalAmount;
@NonNull
private String type;
@NonNull
private String shopId;
public String getBatchNumber() {
return batchNumber;
}
public void setBatchNumber(String batchNumber) {
this.batchNumber = batchNumber;
}
public List<Object> getList() {
return list;
}
public void setList(List<Object> list) {
this.list = list;
}
public BigDecimal getPaidAmount() {
return paidAmount;
}
public void setPaidAmount(BigDecimal paidAmount) {
this.paidAmount = paidAmount;
}
public Long getPaidAt() {
return paidAt;
}
public void setPaidAt(Long paidAt) {
this.paidAt = paidAt;
}
public String getPurveyorId() {
return purveyorId;
}
public void setPurveyorId(String purveyorId) {
this.purveyorId = purveyorId;
}
public String getPurveyorName() {
return purveyorName;
}
public void setPurveyorName(String purveyorName) {
this.purveyorName = purveyorName;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public Long getTime() {
return time;
}
public void setTime(Long time) {
this.time = time;
}
public BigDecimal getTotalAmount() {
return totalAmount;
}
public void setTotalAmount(BigDecimal totalAmount) {
this.totalAmount = totalAmount;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getShopId() {
return shopId;
}
public void setShopId(String shopId) {
this.shopId = shopId;
}
}

View File

@@ -0,0 +1,50 @@
package me.zhengjie.modules.productInfo.productStockOperate.service.dto;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author lyf
*/
@Data
public class ProductListDto {
/**
* sku id
*/
private Integer id;
/**
* 进价
*/
private BigDecimal guidePrice;
/**
* 产品id
*/
private String productId;
/**
* 数量
*/
private Integer number;
private BigDecimal costPrice;
private String name;
/**
*
*/
private BigDecimal totalAmount;
/**
* 单位
*/
private String unitName;
/**
*规格
*/
private String specSnap;
}

View File

@@ -16,8 +16,23 @@
package me.zhengjie.modules.productInfo.productStockOperate.service.impl; package me.zhengjie.modules.productInfo.productStockOperate.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import me.zhengjie.exception.BadRequestException;
import me.zhengjie.modules.productInfo.productSku.domain.TbProductSku;
import me.zhengjie.modules.productInfo.productSku.repository.TbProductSkuRepository;
import me.zhengjie.modules.productInfo.productSku.service.TbProductSkuService;
import me.zhengjie.modules.productInfo.productStock.domain.TbProductStockDetail;
import me.zhengjie.modules.productInfo.productStockOperate.domain.TbProductStockOperate; import me.zhengjie.modules.productInfo.productStockOperate.domain.TbProductStockOperate;
import me.zhengjie.modules.productInfo.productStockOperate.service.VO.ProductStockOperateVO; import me.zhengjie.modules.productInfo.productStockOperate.service.VO.ProductStockOperateVO;
import me.zhengjie.modules.productInfo.productStockOperate.service.dto.OutAndOnDto;
import me.zhengjie.modules.productInfo.productStockOperate.service.dto.ProductListDto;
import me.zhengjie.modules.shopInfo.shop.domain.TbShopInfo;
import me.zhengjie.modules.shopInfo.shop.repository.TbShopInfoRepository;
import me.zhengjie.modules.shopInfo.shopPurveyorTransact.domain.TbShopPurveyorTransact;
import me.zhengjie.modules.shopInfo.shopPurveyorTransact.repository.TbShopPurveyorTransactRepository;
import me.zhengjie.modules.userInfo.domain.TbUserInfo;
import me.zhengjie.utils.*; import me.zhengjie.utils.*;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import me.zhengjie.modules.productInfo.productStockOperate.repository.TbProductStockOperateRepository; import me.zhengjie.modules.productInfo.productStockOperate.repository.TbProductStockOperateRepository;
@@ -25,7 +40,9 @@ import me.zhengjie.modules.productInfo.productStockOperate.service.TbProductStoc
import me.zhengjie.modules.productInfo.productStockOperate.service.dto.TbProductStockOperateDto; import me.zhengjie.modules.productInfo.productStockOperate.service.dto.TbProductStockOperateDto;
import me.zhengjie.modules.productInfo.productStockOperate.service.dto.TbProductStockOperateQueryCriteria; import me.zhengjie.modules.productInfo.productStockOperate.service.dto.TbProductStockOperateQueryCriteria;
import me.zhengjie.modules.productInfo.productStockOperate.service.mapstruct.TbProductStockOperateMapper; import me.zhengjie.modules.productInfo.productStockOperate.service.mapstruct.TbProductStockOperateMapper;
import org.bouncycastle.asn1.dvcs.DVCSObjectIdentifiers;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -33,8 +50,12 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import java.math.BigDecimal;
import java.time.Instant;
import java.util.*; import java.util.*;
import java.io.IOException; import java.io.IOException;
import javax.annotation.Resource;
import javax.persistence.EntityManager;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
/** /**
@@ -49,6 +70,12 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
private final TbProductStockOperateRepository tbProductStockOperateRepository; private final TbProductStockOperateRepository tbProductStockOperateRepository;
private final TbProductStockOperateMapper tbProductStockOperateMapper; private final TbProductStockOperateMapper tbProductStockOperateMapper;
private final TbShopPurveyorTransactRepository purveyorTransactRepository;
private final TbShopInfoRepository shopInfoRepository;
private final TbProductSkuRepository tbProductSkuRepository;
private final TbProductSkuService productSkuService;
private final EntityManager entityManager;
@@ -78,12 +105,23 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
return tbProductStockOperateMapper.toDto(tbProductStockOperateRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); return tbProductStockOperateMapper.toDto(tbProductStockOperateRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)));
} }
@Override
public void nullify() {
}
@Override @Override
@Transactional @Transactional
public TbProductStockOperateDto findById(Integer id) { public ProductStockOperateVO findById(Integer id) {
TbProductStockOperate tbProductStockOperate = tbProductStockOperateRepository.findById(id).orElseGet(TbProductStockOperate::new); TbProductStockOperate tbProductStockOperate = tbProductStockOperateRepository.findById(id).orElseGet(TbProductStockOperate::new);
ProductStockOperateVO stockOperateVO = new ProductStockOperateVO();
BeanUtils.copyProperties(tbProductStockOperate,stockOperateVO);
stockOperateVO.setStockSnap(ListUtil.stringChangeList(tbProductStockOperate.getStockSnap()));
stockOperateVO.setOperatorSnap(StringUtils.stringChangeMap(tbProductStockOperate.getOperatorSnap()));
ValidationUtil.isNull(tbProductStockOperate.getId(),"TbProductStockOperate","id",id); ValidationUtil.isNull(tbProductStockOperate.getId(),"TbProductStockOperate","id",id);
return tbProductStockOperateMapper.toDto(tbProductStockOperate); return stockOperateVO;
} }
@Override @Override
@@ -92,6 +130,123 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe
return tbProductStockOperateMapper.toDto(tbProductStockOperateRepository.save(resources)); return tbProductStockOperateMapper.toDto(tbProductStockOperateRepository.save(resources));
} }
/**
* 出库
* @param resources
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public OutAndOnDto createOutAndONOperate(OutAndOnDto resources) {
//用户相关
TbShopInfo byId = shopInfoRepository.findById(Integer.valueOf(resources.getShopId())).orElseGet(TbShopInfo::new);
if (byId.getId() == null){
throw new BadRequestException("商户号有误");
}
//增加操作日志
long times = Instant.now().toEpochMilli();
TbProductStockOperate stockOperate = new TbProductStockOperate();
stockOperate.setShopId(resources.getShopId());
stockOperate.setStockSnap(resources.getList().toString());
System.out.println(stockOperate.getStockSnap());
stockOperate.setType(resources.getType());
if ("purchase".equals(resources.getType()) || "purveyor".equals(resources.getType())){
stockOperate.setSubType(1);
}else {
stockOperate.setSubType(-1);
}
Map<String, String> operatorSnapMap = new HashMap<>();
operatorSnapMap.put("name", byId.getShopName());
operatorSnapMap.put("account",byId.getAccount());
stockOperate.setOperatorSnap(JSON.toJSONString(operatorSnapMap));
stockOperate.setBatchNumber(resources.getBatchNumber());
stockOperate.setRemark(resources.getRemark());
stockOperate.setStockTime(times);
stockOperate.setCreatedAt(times);
stockOperate.setUpdatedAt(times);
stockOperate.setStatus("normal");
TbProductStockOperate saveStockOperate = tbProductStockOperateRepository.save(stockOperate);
//帐目往来
if (!"other-out".equals(resources.getType()) || !"purchase".equals(resources.getType())) {
TbShopPurveyorTransact purveyorTransact = new TbShopPurveyorTransact();
purveyorTransact.setShopId(resources.getShopId());
purveyorTransact.setPurveyorName(resources.getPurveyorName());
purveyorTransact.setPurveyorId(resources.getPurveyorId());
purveyorTransact.setRemark(resources.getRemark());
purveyorTransact.setCreatedAt(times);
purveyorTransact.setUpdatedAt(times);
purveyorTransact.setTotalAmount(resources.getTotalAmount());
purveyorTransact.setPaidAmount(resources.getPaidAmount());
purveyorTransact.setWaitAmount(resources.getTotalAmount().subtract(resources.getPaidAmount()));
if (resources.getTotalAmount().compareTo(resources.getPaidAmount())<0){
purveyorTransact.setStatus(1);
}else {
purveyorTransact.setStatus(0);
}
purveyorTransact.setPaidAt(resources.getPaidAt());
purveyorTransact.setType(resources.getType());
purveyorTransactRepository.save(purveyorTransact);
}
//库存记录
if (resources.getList() == null){
throw new BadRequestException("数据有误");
}
for (Object date :resources.getList()) {
//商品详情
ProductListDto productListDto= JSONObject.parseObject(JSONObject.toJSONString(date),ProductListDto.class);
TbProductSku tbProductSku = tbProductSkuRepository.findById(productListDto.getId()).orElseGet(TbProductSku::new);
TbProductStockDetail productStockDetail = new TbProductStockDetail();
productStockDetail.setBatchNumber(resources.getBatchNumber());
productStockDetail.setCreatedAt(times);
productStockDetail.setUpdatedAt(times);
productStockDetail.setIsStock(1);
Integer round = (int) Math.floor(tbProductSku.getStockNumber());
productStockDetail.setLeftNumber(round);
productStockDetail.setProductId(productListDto.getProductId());
productStockDetail.setProductName(productListDto.getName());
productStockDetail.setRecordId(saveStockOperate.getId().toString());
productStockDetail.setShopId(resources.getShopId());
productStockDetail.setSkuId(productListDto.getId().toString());
productStockDetail.setSourcePath("NORMAL");
productListDto.setNumber(productListDto.getNumber() != null? productListDto.getNumber(): 0);
switch (resources.getType()) {
case "sale":
productStockDetail.setStockNumber((double) -productListDto.getNumber());
productStockDetail.setSubType(-1);
break;
case "refund":
productStockDetail.setStockNumber((double) productListDto.getNumber());
productStockDetail.setSubType(1);
break;
case "reject":
productStockDetail.setStockNumber((double) -productListDto.getNumber());
productStockDetail.setSubType(-1);
break;
case "purveyor":
productStockDetail.setStockNumber((double) productListDto.getNumber());
productStockDetail.setSubType(1);
break;
case "purchase":
productStockDetail.setStockNumber((double) productListDto.getNumber());
productStockDetail.setSubType(1);
break;
default:
break;
}
productStockDetail.setType(resources.getType());
productStockDetail.setUnitName(productListDto.getUnitName());
entityManager.persist(productStockDetail);
//sku数量
TbProductSku sku = new TbProductSku();
sku.setId(productListDto.getId());
sku.setStockNumber(tbProductSku.getStockNumber()+productStockDetail.getStockNumber());
productSkuService.update(sku);
}
return resources;
}
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void update(TbProductStockOperate resources) { public void update(TbProductStockOperate resources) {