Browse Source

bug修改

dev
wangfukang 2 years ago
parent
commit
45fd29b39c
  1. 2
      hiver-admin/src/main/resources/application.yml
  2. 16
      hiver-admin/test-output/test-report.html
  3. 15
      hiver-core/src/main/java/cc/hiver/core/logisticsaddressbook/mapper/LogisticsAddressBookMapper.java
  4. 10
      hiver-core/src/main/java/cc/hiver/core/logisticsaddressbook/service/LogisticsAddressBookService.java
  5. 48
      hiver-core/src/main/java/cc/hiver/core/logisticsaddressbook/service/impl/LogisticsAddressBookServiceImpl.java
  6. 2
      hiver-core/src/main/java/cc/hiver/core/logisticsaddressbook/vo/LogisticsAddressBookQueryVo.java
  7. 184
      hiver-core/src/main/resources/mapper/LogisticsAddressBookMapper.xml
  8. 35
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/purchaseocr/service/impl/PurchaseOcrPictureServiceImpl.java
  9. 8
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/purchaseocr/vo/LogisticsOrderOfAiVo.java
  10. 33
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/StockServiceImpl.java

2
hiver-admin/src/main/resources/application.yml

@ -341,7 +341,7 @@ ignored:
- /hiver/app/productCategory/listByShopId
# 获取微信二维码
- /hiver/order/ow/getWechatQrcode
- /app/shop/getShopInfoById
- /hiver/app/shop/getShopInfoById
# 临时增加
- /hiver/app/logisticsOrder/addLogisticsOrder

16
hiver-admin/test-output/test-report.html

@ -35,7 +35,7 @@
<a href="#"><span class="badge badge-primary">Hiver</span></a>
</li>
<li class="m-r-10">
<a href="#"><span class="badge badge-primary">九月 30, 2024 17:44:36</span></a>
<a href="#"><span class="badge badge-primary">十月 08, 2024 19:35:03</span></a>
</li>
</ul>
</div>
@ -84,7 +84,7 @@
<div class="test-detail">
<span class="meta text-white badge badge-sm"></span>
<p class="name">passTest</p>
<p class="text-sm"><span>17:44:37 下午</span> / <span>0.02 secs</span></p>
<p class="text-sm"><span>19:35:03 下午</span> / <span>0.015 secs</span></p>
</div>
<div class="test-contents d-none">
<div class="detail-head">
@ -92,9 +92,9 @@
<div class="info">
<div class='float-right'><span class='badge badge-default'>#test-id=1</span></div>
<h5 class="test-status text-pass">passTest</h5>
<span class='badge badge-success'>09.30.2024 17:44:37</span>
<span class='badge badge-danger'>09.30.2024 17:44:37</span>
<span class='badge badge-default'>0.02 secs</span>
<span class='badge badge-success'>10.08.2024 19:35:03</span>
<span class='badge badge-danger'>10.08.2024 19:35:03</span>
<span class='badge badge-default'>0.015 secs</span>
</div>
<div class="m-t-10 m-l-5"></div>
</div>
@ -104,7 +104,7 @@
<tbody>
<tr class="event-row">
<td><span class="badge log pass-bg">Pass</span></td>
<td>17:44:37</td>
<td>19:35:03</td>
<td>
Test passed
</td>
@ -128,13 +128,13 @@
<div class="col-md-3">
<div class="card"><div class="card-body">
<p class="m-b-0">Started</p>
<h3>九月 30, 2024 17:44:36</h3>
<h3>十月 08, 2024 19:35:03</h3>
</div></div>
</div>
<div class="col-md-3">
<div class="card"><div class="card-body">
<p class="m-b-0">Ended</p>
<h3>九月 30, 2024 17:44:37</h3>
<h3>十月 08, 2024 19:35:03</h3>
</div></div>
</div>
<div class="col-md-3">

15
hiver-core/src/main/java/cc/hiver/core/logisticsaddressbook/mapper/LogisticsAddressBookMapper.java

@ -1,11 +1,20 @@
package cc.hiver.core.logisticsaddressbook.mapper;
import cc.hiver.core.logisticsaddressbook.entity.LogisticsAddressBook;
import cc.hiver.core.logisticsaddressbook.vo.LogisticsAddressBookQueryVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
public interface LogisticsAddressBookMapper extends BaseMapper<LogisticsAddressBook> {
import java.util.List;
public interface LogisticsAddressBookMapper extends BaseMapper<LogisticsAddressBook> {
/**
* 根据名称支持拼音模糊匹配及手机号查询列表
* @author 王富康
* @date 2024/10/8
* @param logisticsAddressBookQueryVo
* @return List<LogisticsAddressBook>
*/
List<LogisticsAddressBook> getLogisticsAddressBookList(@Param("queryParams") LogisticsAddressBookQueryVo logisticsAddressBookQueryVo);
}

10
hiver-core/src/main/java/cc/hiver/core/logisticsaddressbook/service/LogisticsAddressBookService.java

@ -3,6 +3,7 @@ package cc.hiver.core.logisticsaddressbook.service;
import cc.hiver.core.logisticsaddressbook.entity.LogisticsAddressBook;
import cc.hiver.core.logisticsaddressbook.vo.LogisticsAddressBookQueryVo;
import cc.hiver.core.logisticsorder.entity.LogisticsOrder;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
@ -13,4 +14,13 @@ public interface LogisticsAddressBookService extends IService<LogisticsAddressBo
IPage<LogisticsAddressBook> getLogisticsAddressBookPageList(LogisticsAddressBookQueryVo logisticsAddressBookQueryVo);
/**
* 根据姓名可拼音匹配或者手机号模糊查询地址列表
* @author 王富康
* @date 2024/10/8
* @param logisticsAddressBookQueryVo
* @return JSONObject
*/
JSONObject getLogisticsAddressBookList(LogisticsAddressBookQueryVo logisticsAddressBookQueryVo);
}

48
hiver-core/src/main/java/cc/hiver/core/logisticsaddressbook/service/impl/LogisticsAddressBookServiceImpl.java

@ -5,6 +5,7 @@ import cc.hiver.core.logisticsaddressbook.mapper.LogisticsAddressBookMapper;
import cc.hiver.core.logisticsaddressbook.service.LogisticsAddressBookService;
import cc.hiver.core.logisticsaddressbook.vo.LogisticsAddressBookQueryVo;
import cc.hiver.core.logisticsorder.entity.LogisticsOrder;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -39,19 +40,19 @@ public class LogisticsAddressBookServiceImpl extends ServiceImpl<LogisticsAddres
@Override
public boolean saveLogisticsAddressBook(LogisticsOrder logisticsOrder) {
List<LogisticsAddressBook> list = new ArrayList<>();
final List<LogisticsAddressBook> list = new ArrayList<>();
//根据名称、电话、地址查询看是不是存在,如果不存在则新建一条
LambdaQueryWrapper<LogisticsAddressBook> stuQuery = new LambdaQueryWrapper<>();
final LambdaQueryWrapper<LogisticsAddressBook> stuQuery = new LambdaQueryWrapper<>();
stuQuery.eq(LogisticsAddressBook::getShipperOrReceiverName, logisticsOrder.getShipperName())
.eq(LogisticsAddressBook::getAddressType, 1)
.eq(LogisticsAddressBook::getMobile, logisticsOrder.getShipperMobile())
.eq(LogisticsAddressBook::getAddressInfo, logisticsOrder.getShipperAddress());
Long count = getBaseMapper().selectCount(stuQuery);
final Long count = getBaseMapper().selectCount(stuQuery);
if(count == 0){
// 创建发货人地址簿
LogisticsAddressBook shipperAddressBook = new LogisticsAddressBook();
final LogisticsAddressBook shipperAddressBook = new LogisticsAddressBook();
// 设置发货人名称,从物流订单的发货人名称中获取
shipperAddressBook.setShipperOrReceiverName(logisticsOrder.getShipperName());
// 设置地址信息,从物流订单的发货人地址获取
@ -73,16 +74,16 @@ public class LogisticsAddressBookServiceImpl extends ServiceImpl<LogisticsAddres
list.add(shipperAddressBook);
}
LambdaQueryWrapper<LogisticsAddressBook> stuQuery2 = new LambdaQueryWrapper<>();
final LambdaQueryWrapper<LogisticsAddressBook> stuQuery2 = new LambdaQueryWrapper<>();
stuQuery2.eq(LogisticsAddressBook::getShipperOrReceiverName, logisticsOrder.getReceiverName())
.eq(LogisticsAddressBook::getAddressType, 2)
.eq(LogisticsAddressBook::getMobile, logisticsOrder.getReceiverMobile())
.eq(LogisticsAddressBook::getAddressInfo, logisticsOrder.getReceiverAddress());
Long count2 = getBaseMapper().selectCount(stuQuery2);
final Long count2 = getBaseMapper().selectCount(stuQuery2);
if(count2 == 0) {
// 创建收货人地址簿
LogisticsAddressBook reciverAddressBook = new LogisticsAddressBook();
final LogisticsAddressBook reciverAddressBook = new LogisticsAddressBook();
// 设置收货人名称,从物流订单的收货人名称中获取
reciverAddressBook.setShipperOrReceiverName(logisticsOrder.getReceiverName());
// 设置地址信息,从物流订单的发货人地址获取
@ -102,15 +103,15 @@ public class LogisticsAddressBookServiceImpl extends ServiceImpl<LogisticsAddres
list.add(reciverAddressBook);
}
// 调用save方法保存地址簿信息,返回保存结果
Gson gson = new Gson();
final Gson gson = new Gson();
System.out.println(gson.toJson(list));
return saveBatch(list);
}
@Override
public IPage<LogisticsAddressBook> getLogisticsAddressBookPageList(LogisticsAddressBookQueryVo logisticsAddressBookQueryVo) {
Page<LogisticsAddressBook> page = new Page<>();
LambdaQueryWrapper<LogisticsAddressBook> wrapper = new LambdaQueryWrapper<>();
final Page<LogisticsAddressBook> page = new Page<>();
final LambdaQueryWrapper<LogisticsAddressBook> wrapper = new LambdaQueryWrapper<>();
if(logisticsAddressBookQueryVo != null && StringUtils.isNotEmpty(logisticsAddressBookQueryVo.getKeyWord())){
wrapper.like(LogisticsAddressBook::getShipperOrReceiverName, logisticsAddressBookQueryVo.getKeyWord()).or()
.like(LogisticsAddressBook::getMobile, logisticsAddressBookQueryVo.getKeyWord());
@ -120,4 +121,31 @@ public class LogisticsAddressBookServiceImpl extends ServiceImpl<LogisticsAddres
return logisticsAddressBookMapper.selectPage(page,wrapper);
}
/**
* 根据名称支持拼音模糊匹配及手机号查询列表
* @author 王富康
* @date 2024/10/8
* @param logisticsAddressBookQueryVo
* @return List<LogisticsAddressBook>
*/
@Override
public JSONObject getLogisticsAddressBookList(LogisticsAddressBookQueryVo logisticsAddressBookQueryVo) {
final JSONObject jsonObject = new JSONObject();
// 必须包含addressType,
if(logisticsAddressBookQueryVo.getAddressType() == null){
jsonObject.set("flag","0");
jsonObject.set("msg","addressType参数为空");
return jsonObject;
}
if(StringUtils.isEmpty(logisticsAddressBookQueryVo.getShipperOrReceiverName()) && StringUtils.isEmpty(logisticsAddressBookQueryVo.getMobile())){
jsonObject.set("flag","0");
jsonObject.set("msg","姓名及电话必须传一个!");
return jsonObject;
}
final List<LogisticsAddressBook> logisticsAddressBookList = logisticsAddressBookMapper.getLogisticsAddressBookList(logisticsAddressBookQueryVo);
jsonObject.set("data",logisticsAddressBookList);
jsonObject.set("flag","1");
return jsonObject;
}
}

2
hiver-core/src/main/java/cc/hiver/core/logisticsaddressbook/vo/LogisticsAddressBookQueryVo.java

@ -21,6 +21,8 @@ public class LogisticsAddressBookQueryVo extends HiverBasePageQuery {
@ApiModelProperty(value = "收发货人名称")
private String shipperOrReceiverName;
@ApiModelProperty(value = "地址类型 1发货地址信息 2收货地址信息")
private Integer addressType;
private String keyWord;
}

184
hiver-core/src/main/resources/mapper/LogisticsAddressBookMapper.xml

@ -0,0 +1,184 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cc.hiver.core.logisticsaddressbook.mapper.LogisticsAddressBookMapper">
<resultMap id="BaseResultMap" type="cc.hiver.core.logisticsaddressbook.entity.LogisticsAddressBook">
<id column="id" jdbcType="VARCHAR" property="id" />
<result column="create_by" jdbcType="VARCHAR" property="createBy" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="del_flag" jdbcType="INTEGER" property="delFlag" />
<result column="update_by" jdbcType="VARCHAR" property="updateBy" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="shipper_or_receiver_name" jdbcType="VARCHAR" property="shipperOrReceiverName" />
<result column="address_type" jdbcType="INTEGER" property="addressType" />
<result column="mobile" jdbcType="VARCHAR" property="mobile" />
<result column="address_info" jdbcType="VARCHAR" property="addressInfo" />
<result column="company_id" jdbcType="VARCHAR" property="companyId" />
<result column="company_name" jdbcType="VARCHAR" property="companyName" />
</resultMap>
<sql id="Base_Column_List">
id, create_by, create_time, del_flag, update_by, update_time, shipper_or_receiver_name, address_type, mobile, address_info, company_id, company_name
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from t_logistics_address_book
where id = #{id,jdbcType=VARCHAR}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String">
delete from t_logistics_address_book
where id = #{id,jdbcType=VARCHAR}
</delete>
<insert id="insert" parameterType="cc.hiver.core.logisticsaddressbook.entity.LogisticsAddressBook">
insert into t_logistics_address_book
(id, create_by, create_time, del_flag, update_by, update_time, shipper_or_receiver_name, address_type, mobile, address_info, company_id, company_name)
values (#{id,jdbcType=VARCHAR}, #{createBy,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP},
#{delFlag,jdbcType=INTEGER}, #{updateBy,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP},
#{shipperOrReceiverName,jdbcType=VARCHAR}, #{addressType,jdbcType=INTEGER}, #{mobile,jdbcType=VARCHAR},
#{addressInfo,jdbcType=VARCHAR}, #{companyId,jdbcType=VARCHAR}, #{companyName,jdbcType=VARCHAR})
</insert>
<update id="updateByExampleSelective" parameterType="map">
update t_logistics_address_book
<set>
<if test="record.id != null">
id = #{record.id,jdbcType=VARCHAR},
</if>
<if test="record.createBy != null">
create_by = #{record.createBy,jdbcType=VARCHAR},
</if>
<if test="record.createTime != null">
create_time = #{record.createTime,jdbcType=TIMESTAMP},
</if>
<if test="record.delFlag != null">
del_flag = #{record.delFlag,jdbcType=INTEGER},
</if>
<if test="record.updateBy != null">
update_by = #{record.updateBy,jdbcType=VARCHAR},
</if>
<if test="record.updateTime != null">
update_time = #{record.updateTime,jdbcType=TIMESTAMP},
</if>
<if test="record.shipperOrReceiverName != null">
shipper_or_receiver_name = #{record.shipperOrReceiverName,jdbcType=VARCHAR},
</if>
<if test="record.addressType != null">
address_type = #{record.addressType,jdbcType=INTEGER},
</if>
<if test="record.mobile != null">
mobile = #{record.mobile,jdbcType=VARCHAR},
</if>
<if test="record.addressInfo != null">
address_info = #{record.addressInfo,jdbcType=VARCHAR},
</if>
<if test="record.companyId != null">
company_id = #{record.companyId,jdbcType=VARCHAR},
</if>
<if test="record.companyName != null">
company_name = #{record.companyName,jdbcType=VARCHAR},
</if>
</set>
</update>
<update id="updateByExample" parameterType="map">
update t_logistics_address_book
set id = #{record.id,jdbcType=VARCHAR},
create_by = #{record.createBy,jdbcType=VARCHAR},
create_time = #{record.createTime,jdbcType=TIMESTAMP},
del_flag = #{record.delFlag,jdbcType=INTEGER},
update_by = #{record.updateBy,jdbcType=VARCHAR},
update_time = #{record.updateTime,jdbcType=TIMESTAMP},
shipper_or_receiver_name = #{record.shipperOrReceiverName,jdbcType=VARCHAR},
address_type = #{record.addressType,jdbcType=INTEGER},
mobile = #{record.mobile,jdbcType=VARCHAR},
address_info = #{record.addressInfo,jdbcType=VARCHAR},
company_id = #{record.companyId,jdbcType=VARCHAR},
company_name = #{record.companyName,jdbcType=VARCHAR}
</update>
<update id="updateByPrimaryKeySelective" parameterType="cc.hiver.core.logisticsaddressbook.entity.LogisticsAddressBook">
update t_logistics_address_book
<set>
<if test="createBy != null">
create_by = #{createBy,jdbcType=VARCHAR},
</if>
<if test="createTime != null">
create_time = #{createTime,jdbcType=TIMESTAMP},
</if>
<if test="delFlag != null">
del_flag = #{delFlag,jdbcType=INTEGER},
</if>
<if test="updateBy != null">
update_by = #{updateBy,jdbcType=VARCHAR},
</if>
<if test="updateTime != null">
update_time = #{updateTime,jdbcType=TIMESTAMP},
</if>
<if test="shipperOrReceiverName != null">
shipper_or_receiver_name = #{shipperOrReceiverName,jdbcType=VARCHAR},
</if>
<if test="addressType != null">
address_type = #{addressType,jdbcType=INTEGER},
</if>
<if test="mobile != null">
mobile = #{mobile,jdbcType=VARCHAR},
</if>
<if test="addressInfo != null">
address_info = #{addressInfo,jdbcType=VARCHAR},
</if>
<if test="companyId != null">
company_id = #{companyId,jdbcType=VARCHAR},
</if>
<if test="companyName != null">
company_name = #{companyName,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=VARCHAR}
</update>
<update id="updateByPrimaryKey" parameterType="cc.hiver.core.logisticsaddressbook.entity.LogisticsAddressBook">
update t_logistics_address_book
set create_by = #{createBy,jdbcType=VARCHAR},
create_time = #{createTime,jdbcType=TIMESTAMP},
del_flag = #{delFlag,jdbcType=INTEGER},
update_by = #{updateBy,jdbcType=VARCHAR},
update_time = #{updateTime,jdbcType=TIMESTAMP},
shipper_or_receiver_name = #{shipperOrReceiverName,jdbcType=VARCHAR},
address_type = #{addressType,jdbcType=INTEGER},
mobile = #{mobile,jdbcType=VARCHAR},
address_info = #{addressInfo,jdbcType=VARCHAR},
company_id = #{companyId,jdbcType=VARCHAR},
company_name = #{companyName,jdbcType=VARCHAR}
where id = #{id,jdbcType=VARCHAR}
</update>
<!--管理商品分页列表-->
<select id="getLogisticsAddressBookList" resultMap="BaseResultMap" parameterType="cc.hiver.core.logisticsaddressbook.vo.LogisticsAddressBookQueryVo">
select
t.id, t.create_by,t.create_time,t.del_flag,t.update_by,t.update_time,
t.shipper_or_receiver_name, t.address_type, t.mobile, t.address_info, t.company_id, t.company_name
from t_logistics_address_book t
<where>
t.address_type = #{queryParams.addressType}
AND (
<if test='queryParams.shipperOrReceiverName!=null and queryParams.shipperOrReceiverName.trim() neq ""'>
t.shipper_or_receiver_name LIKE CONCAT( '%', #{queryParams.shipperOrReceiverName}, '%' )
OR to_pinyin ( t.shipper_or_receiver_name ) LIKE CONCAT( '%', to_pinyin ( #{queryParams.shipperOrReceiverName} ), '%' )
OR to_initial_pinyin ( t.shipper_or_receiver_name ) LIKE CONCAT( '%', #{queryParams.shipperOrReceiverName}, '%' )
</if>
<if test='queryParams.mobile!=null and queryParams.mobile.trim() neq ""'>
<if test='queryParams.shipperOrReceiverName!=null and queryParams.shipperOrReceiverName.trim() neq ""'>
or
</if>
t.mobile LIKE CONCAT( '%', #{queryParams.mobile}, '%' )
</if>
)
</where>
ORDER BY
t.create_time desc
</select>
</mapper>

35
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/purchaseocr/service/impl/PurchaseOcrPictureServiceImpl.java

@ -3,6 +3,9 @@ package cc.hiver.mall.purchaseocr.service.impl;
import cc.hiver.core.common.utils.CommonUtil;
import cc.hiver.core.common.utils.SecurityUtil;
import cc.hiver.core.entity.User;
import cc.hiver.core.logisticsaddressbook.entity.LogisticsAddressBook;
import cc.hiver.core.logisticsaddressbook.service.LogisticsAddressBookService;
import cc.hiver.core.logisticsaddressbook.vo.LogisticsAddressBookQueryVo;
import cc.hiver.mall.common.constant.PurchaseConstant;
import cc.hiver.mall.config.thread.AiPurchaseThread;
import cc.hiver.mall.config.thread.ThreadPoolConfiguration;
@ -77,6 +80,9 @@ public class PurchaseOcrPictureServiceImpl implements PurchaseOcrPictureService
@Autowired
private SaleService saleService;
@Autowired
private LogisticsAddressBookService logisticsAddressBookService;
@Override
public JSONObject batchSave(PurchaseOciPictureAddVo purchaseOciPictureAddVo) {
@ -211,7 +217,7 @@ public class PurchaseOcrPictureServiceImpl implements PurchaseOcrPictureService
final String resultContent = jsonObject.get("resultContent").toString();
final JSONArray json = JSON.parseArray(resultContent);
// 旧商品的id集合
List<String> oldProductIdList = new ArrayList<>();
final List<String> oldProductIdList = new ArrayList<>();
for (int i = 0; i < json.size(); i++) {
final JSONObject object = json.getJSONObject(i);
String productSn = object.getString("productSn");
@ -253,7 +259,7 @@ public class PurchaseOcrPictureServiceImpl implements PurchaseOcrPictureService
// 20240928 app/sale/buyAi接口加个参数productId,如果传值了,查规格库存数的时候就查这款商品的
product = productService.getById(singleProductId);
}
String productId = product.getId();
final String productId = product.getId();
oldProductIdList.add(productId);
// 查询商品所有的库存
final List<Stock> stockList = stockService.getProductStock(productId);
@ -638,6 +644,31 @@ public class PurchaseOcrPictureServiceImpl implements PurchaseOcrPictureService
logisticsOrderOfAiVo.setPremium(premium);
final String objectName = object.getString("objectName");
logisticsOrderOfAiVo.setObjectName(objectName);
// 20241008 根据发货人信息或者收货人信息查询地址列表
// 发货人 shipperName,shipperMobile
final LogisticsAddressBookQueryVo logisticsAddressBookQueryVo = new LogisticsAddressBookQueryVo();
logisticsAddressBookQueryVo.setAddressType(1);
logisticsAddressBookQueryVo.setShipperOrReceiverName(shipperName);
logisticsAddressBookQueryVo.setMobile(shipperMobile);
final cn.hutool.json.JSONObject logisticsAddressBookList = logisticsAddressBookService.getLogisticsAddressBookList(logisticsAddressBookQueryVo);
if("1".equals(logisticsAddressBookList.get("flag"))){
final List<LogisticsAddressBook> data = (List<LogisticsAddressBook>) logisticsAddressBookList.get("data");
logisticsOrderOfAiVo.setShipperList(data);
}else{
log.info(logisticsAddressBookList.get("msg").toString());
}
// 收货人 receiverName,receiverMobile
final LogisticsAddressBookQueryVo receiverQueryVo = new LogisticsAddressBookQueryVo();
receiverQueryVo.setAddressType(2);
receiverQueryVo.setShipperOrReceiverName(receiverName);
receiverQueryVo.setMobile(receiverMobile);
final cn.hutool.json.JSONObject receiverList = logisticsAddressBookService.getLogisticsAddressBookList(receiverQueryVo);
if("1".equals(receiverList.get("flag"))){
final List<LogisticsAddressBook> data = (List<LogisticsAddressBook>) receiverList.get("data");
logisticsOrderOfAiVo.setReceiverList(data);
}else{
log.info(receiverList.get("msg").toString());
}
logisticsOrderOfAiVos.add(logisticsOrderOfAiVo);
}
} catch (Exception e) {

8
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/purchaseocr/vo/LogisticsOrderOfAiVo.java

@ -1,9 +1,11 @@
package cc.hiver.mall.purchaseocr.vo;
import cc.hiver.core.logisticsaddressbook.entity.LogisticsAddressBook;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@Data
public class LogisticsOrderOfAiVo {
@ -14,12 +16,18 @@ public class LogisticsOrderOfAiVo {
@ApiModelProperty(value = "发货电话")
private String shipperMobile;
@ApiModelProperty(value = "发货人列表")
private List<LogisticsAddressBook> shipperList;
@ApiModelProperty(value = "收货人")
private String receiverName;
@ApiModelProperty(value = "收货电话")
private String receiverMobile;
@ApiModelProperty(value = "收货人列表")
private List<LogisticsAddressBook> receiverList;
@ApiModelProperty(value = "重量")
private BigDecimal weight;

33
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/StockServiceImpl.java

@ -2,7 +2,7 @@ package cc.hiver.mall.serviceimpl.mybatis;
import cc.hiver.core.common.constant.CommonConstant;
import cc.hiver.core.common.constant.ProductConstant;
import cc.hiver.core.common.constant.UserConstant;
import cc.hiver.core.common.constant.ShopUserConstant;
import cc.hiver.core.common.exception.HiverException;
import cc.hiver.core.common.utils.ResultUtil;
import cc.hiver.core.common.utils.SecurityUtil;
@ -26,9 +26,10 @@ import cc.hiver.mall.purchasereturn.entity.PurchaseReturnDetail;
import cc.hiver.mall.purchasereturn.service.PurchaseReturnDetailService;
import cc.hiver.mall.purchasereturn.service.PurchaseReturnService;
import cc.hiver.mall.purchasereturn.vo.PurchaseReturnVo;
import cc.hiver.mall.service.ShopUserService;
import cc.hiver.mall.service.mybatis.*;
import cc.hiver.mall.utils.DateUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -84,6 +85,10 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
@Autowired
private PurchaseReturnDetailService purchaseReturnDetailService;
@Autowired
private ShopUserService shopUserService;
@Transactional
@Override
public Result putIn(PurchaseVo purchaseVo) {
@ -501,7 +506,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
// 设置商品的批发价和零售价
product.setPrice(purchaseDetail.getLsPrice());
product.setWholesalePrice(purchaseDetail.getWholesalePrice());
if(!"[]".equals(purchaseDetail.getCustomerCategoryRule()) && !"null".equals(purchaseDetail.getCustomerCategoryRule())){
if (!"[]".equals(purchaseDetail.getCustomerCategoryRule()) && !"null".equals(purchaseDetail.getCustomerCategoryRule())) {
product.setCustomerCategoryRule(purchaseDetail.getCustomerCategoryRule());
}
// 保存商品供应商信息
@ -786,13 +791,13 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
// 20240824 增加货号判断是否为旧商品
// 根据货号查询商品是否存在
CopyOnWriteArrayList<Product> oldProductListBySn = productService.getByProductSn(purchaseDetail.getProductSn(), shopId,"");
CopyOnWriteArrayList<Product> oldProductListBySn = productService.getByProductSn(purchaseDetail.getProductSn(), shopId, "");
if (oldProductListBySn != null && !oldProductListBySn.isEmpty()) {
// 旧商品,赋值商品id
purchaseDetail.setProductId(oldProductListBySn.get(0).getId());
// 旧商品
productIdList.add(productId);
}else{
} else {
// 新增商品
final Product product = new Product();
product.setCreateBy(user.getId());
@ -820,7 +825,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
product.setPrintBarcode(purchaseDetail.getPrintBarcode());
product.setTailWarn(purchaseDetail.getTailWarn());
product.setInStorageStatus(PurchaseConstant.IN_STORAGE_STATUS[1]);
if(!"[]".equals(purchaseDetail.getCustomerCategoryRule()) && !"null".equals(purchaseDetail.getCustomerCategoryRule())){
if (!"[]".equals(purchaseDetail.getCustomerCategoryRule()) && !"null".equals(purchaseDetail.getCustomerCategoryRule())) {
product.setCustomerCategoryRule(purchaseDetail.getCustomerCategoryRule());
}
addProductList.add(product);
@ -852,7 +857,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
if (!value.contains("色")) {
value += '色';
}
colorStr.append('"' +value+ '"');
colorStr.append('"' + value + '"');
} else if ("尺码".equals(key)) {
final String valueUpperCase = value.toUpperCase();
if (value.contains("码")) {
@ -860,7 +865,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
} else {
value = valueUpperCase + '码';
}
sizeStr.append('"' +value+ '"');
sizeStr.append('"' + value + '"');
} else {
// 暂不支持其他规格
}
@ -923,6 +928,8 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
productMap.putIfAbsent(product.getId(), product);
}
// 获取需要新增的规格及属性集合
// 获取当前登录人在当前店铺的身份
ShopUser shopUser = shopUserService.selectByUserIdAndShopId(user.getId(), shopId);
// 获取需要新增的规格信息
final Map<String, Map<String, List<String>>> stringListMap = new HashMap<>();
for (PurchaseDetail purchaseDetail : purchaseDetails) {
@ -953,7 +960,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
stockQueryWrapper.eq("shop_id", shopId);
final List<Stock> productStockList = list(stockQueryWrapper);
if (purchaseDetail.getPurchasePrice() == null && user.getType().equals(UserConstant.USER_TYPE_NORMAL)) {
if (purchaseDetail.getPurchasePrice() == null && Objects.equals(shopUser.getType(), ShopUserConstant.SHOP_ADMIN_COST[1])) {
// 未维护采购价,设置订单状态为待入库,这里是循环的,前端要控制有就全部都要有,没有就全部没有。
// 设置为未入库,商品不计算平均采购价
purchase.setInStorageStatus(StockConstant.IN_STORAGE_STATUS[0]);
@ -1010,7 +1017,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
product.setProductPicture(purchaseDetail.getProductPicture());
// 更新商品的名称
product.setProductName(purchaseDetail.getProductName());
if(!"[]".equals(purchaseDetail.getCustomerCategoryRule()) && !"null".equals(purchaseDetail.getCustomerCategoryRule())){
if (!"[]".equals(purchaseDetail.getCustomerCategoryRule()) && !"null".equals(purchaseDetail.getCustomerCategoryRule())) {
product.setCustomerCategoryRule(purchaseDetail.getCustomerCategoryRule());
}
updateProductList.add(product);
@ -1045,7 +1052,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
if (!value.contains("色")) {
value += '色';
}
colorStr.append('"' +value+ '"');
colorStr.append('"' + value + '"');
} else if ("尺码".equals(key)) {
final String valueUpperCase = value.toUpperCase();
if (value.contains("码")) {
@ -1053,7 +1060,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
} else {
value = valueUpperCase + '码';
}
sizeStr.append('"' +value+ '"');
sizeStr.append('"' + value + '"');
} else {
// 暂不支持其他规格
}
@ -1201,7 +1208,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
productService.saveOrUpdateBatch(updateProductList);
// 更新供应商欠款信息及欠款记录
//如果没有采购价 并且是普通用户的话,不保存记录
if(CollectionUtil.isNotEmpty(purchaseVo.getPurchaseDetails()) && purchaseVo.getPurchaseDetails().get(0).getPurchasePrice() == null && !user.getType().equals(UserConstant.USER_TYPE_NORMAL)) {
if (CollUtil.isNotEmpty(purchaseVo.getPurchaseDetails()) && purchaseVo.getPurchaseDetails().get(0).getPurchasePrice() != null && Objects.equals(shopUser.getType(), ShopUserConstant.SHOP_ADMIN_COST[0])) {
debtService.purchaseToDebt(purchase);
}
return ResultUtil.success("添加成功");

Loading…
Cancel
Save