## 仓储发库同步功能;
This commit is contained in:
parent
07ffadeab0
commit
bf08c889e6
|
@ -215,23 +215,25 @@ public class SaDeliverController extends BaseController {
|
|||
public AjaxResult batchDeliverImport(MultipartFile file, @RequestParam("idList") List<Long> idList) throws Exception {
|
||||
ExcelUtil<DeliverTemplateParam> util = new ExcelUtil<>(DeliverTemplateParam.class);
|
||||
List<DeliverTemplateParam> deliverTemplateParamList = util.importExcel(file.getInputStream());
|
||||
Map<String, DeliverTemplateParam> templateParamMap = deliverTemplateParamList.stream().collect(Collectors.toMap(DeliverTemplateParam::getDeliverCode, val -> val));
|
||||
|
||||
// 返回数据
|
||||
List<DeliverTemplateVO> resultList = new ArrayList<>(idList.size());
|
||||
|
||||
// 查询发货单信息
|
||||
List<SaDeliver> saDeliverList = iSaDeliverService.listDataBatch(idList);
|
||||
List<SaDeliver> saDeliverList = iSaDeliverService.listByIds(idList);
|
||||
|
||||
for (SaDeliver saDeliver : saDeliverList) {
|
||||
DeliverTemplateParam deliverTemplate = templateParamMap.get(saDeliver.getDeliverCode());
|
||||
if (null != deliverTemplate) {
|
||||
// 发货单号相同 ,则进行返回
|
||||
// 遍历导入数据,匹配发货单发货数据,如果相同则封装返回发货信息
|
||||
for (DeliverTemplateParam deliverTemplate : deliverTemplateParamList) {
|
||||
if (saDeliver.getDeliverCode().equals(deliverTemplate.getDeliverCode())) {
|
||||
// 物流单号相同,进行返回
|
||||
resultList.add(DeliverTemplateVO.builder()
|
||||
.pkId(saDeliver.getPkId())
|
||||
.logisticsCompany(deliverTemplate.getLogisticsCompany().trim())
|
||||
.logisticsCode(deliverTemplate.getLogisticsCode().trim())
|
||||
.build());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return AjaxResult.success(resultList);
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.hzs.sale.deliver.controller.manage;
|
|||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.DesensitizedUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.hzs.common.core.annotation.AccessPermissions;
|
||||
import com.hzs.common.core.annotation.Log;
|
||||
import com.hzs.common.core.annotation.RepeatSubmitSimple;
|
||||
|
@ -18,6 +19,7 @@ import com.hzs.common.core.web.controller.BaseController;
|
|||
import com.hzs.common.core.web.domain.AjaxResult;
|
||||
import com.hzs.common.core.web.page.TableDataInfo;
|
||||
import com.hzs.common.domain.sale.deliver.SaDeliver;
|
||||
import com.hzs.common.domain.sale.deliver.SaDeliverBarCode;
|
||||
import com.hzs.common.security.utils.SecurityUtils;
|
||||
import com.hzs.common.service.ITransactionCommonService;
|
||||
import com.hzs.common.util.TransactionUtils;
|
||||
|
@ -43,11 +45,7 @@ import java.util.*;
|
|||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Description: 发货清单已合单控制器
|
||||
* @Author: jiang chao
|
||||
* @Time: 2022/10/19 16:43
|
||||
* @Classname: SaDeliverController
|
||||
* @PackageName: com.hzs.sale.order.controller.manager
|
||||
* 发货清单已合单控制器
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/manage/deliver-handled")
|
||||
|
@ -162,6 +160,74 @@ public class SaDeliverHandledController extends BaseController {
|
|||
util.exportExcel(response, resultList, "发货清单已合单导出");
|
||||
}
|
||||
|
||||
/**
|
||||
* 仓储导出
|
||||
*
|
||||
* @param response
|
||||
* @param param
|
||||
*/
|
||||
@PostMapping("/wms-export")
|
||||
public void wmsExport(HttpServletResponse response, DeliverHandledParam param) {
|
||||
DateUtils.handTimeStartAndEnd(param.getCreationTime());
|
||||
DateUtils.handTimeStartAndEnd(param.getPayTime());
|
||||
|
||||
// 国家ID
|
||||
Integer pkCountry = SecurityUtils.getPkCountry();
|
||||
|
||||
List<DeliverWmsVO> voList = new ArrayList<>();
|
||||
|
||||
// 获取管理员权限(角色地区范围、体系列表、团队列表)
|
||||
UserAuthorityDTO userAuthorityDTO = iUserServiceApi.getUserAuthority(SecurityUtils.getUserId()).getData();
|
||||
param.setAreaScopeList(userAuthorityDTO.getRoleAreaScopeList());
|
||||
param.setVertexIdList(userAuthorityDTO.getVertexIdList());
|
||||
param.setTeamList(userAuthorityDTO.getUserTeamList());
|
||||
|
||||
List<DeliverHandledVO> resultList = iSaDeliverService.queryDeliverHandledList(param, pkCountry);
|
||||
|
||||
// 当查询有数据才进行处理
|
||||
if (resultList.size() > 0) {
|
||||
// 获取行政区划map
|
||||
Map<Integer, String> areaMap = iAreaServiceApi.getAreaMap(pkCountry).getData();
|
||||
|
||||
String deliverCode = "";
|
||||
DeliverWmsVO vo = null;
|
||||
// 合并 key: 发货单号 + 仓储编号 + 规格,一样的累计数量
|
||||
String key = null;
|
||||
for (DeliverHandledVO deliverHandled : resultList) {
|
||||
if (null == key || !key.equals(deliverHandled.getDeliverCode() + "-" + deliverHandled.getWmsCode() + "-" + deliverHandled.getSpecsName())) {
|
||||
// key: 发货单号 + 仓储编号 + 规格,一样的累计数量
|
||||
key = deliverHandled.getDeliverCode() + "-" + deliverHandled.getWmsCode() + "-" + deliverHandled.getSpecsName();
|
||||
|
||||
vo = DeliverWmsVO.builder()
|
||||
.wmsCode(deliverHandled.getWmsCode())
|
||||
.productName(deliverHandled.getProductName())
|
||||
.specsName(deliverHandled.getSpecsName())
|
||||
.quantity(deliverHandled.getQuantity())
|
||||
.price(BigDecimal.ZERO)
|
||||
.build();
|
||||
if (!deliverCode.equals(deliverHandled.getDeliverCode())) {
|
||||
deliverCode = deliverHandled.getDeliverCode();
|
||||
vo.setDeliverCode(deliverHandled.getDeliverCode());
|
||||
vo.setRecName(deliverHandled.getRecName());
|
||||
vo.setRecPhone(deliverHandled.getRecPhone());
|
||||
|
||||
// 省市区处理
|
||||
OrderUtil.handleOrderAddress(areaMap, deliverHandled);
|
||||
String address = deliverHandled.getRecProvinceVal()
|
||||
+ (StringUtils.isNotEmpty(deliverHandled.getRecCityVal()) ? deliverHandled.getRecCityVal() : "")
|
||||
+ (StringUtils.isNotEmpty(deliverHandled.getRecCountyVal()) ? deliverHandled.getRecCountyVal() : "")
|
||||
+ deliverHandled.getRecAddress();
|
||||
vo.setRecAddress(address);
|
||||
}
|
||||
voList.add(vo);
|
||||
} else {
|
||||
vo.setQuantity(vo.getQuantity() + deliverHandled.getQuantity());
|
||||
}
|
||||
}
|
||||
}
|
||||
ExcelUtil<DeliverWmsVO> util = new ExcelUtil<>(DeliverWmsVO.class);
|
||||
util.exportExcel(response, voList, "发货清单已合单导出");
|
||||
}
|
||||
|
||||
/**
|
||||
* 打印货单
|
||||
|
|
|
@ -4,48 +4,45 @@ import com.hzs.common.core.annotation.Excel;
|
|||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Description: 导入发货数据参数
|
||||
* @Author: jiang chao
|
||||
* @Time: 2022/10/31 10:00
|
||||
* @Classname: BatchDeliverVO
|
||||
* @PackageName: com.hzs.sale.deliver.vo
|
||||
* 导入发货数据参数
|
||||
*/
|
||||
@Data
|
||||
public class DeliverTemplateParam {
|
||||
|
||||
/**
|
||||
* 收货姓名
|
||||
*/
|
||||
@Excel(name = "收货姓名")
|
||||
private String recName;
|
||||
// /**
|
||||
// * 收货姓名
|
||||
// */
|
||||
// @Excel(name = "收货姓名")
|
||||
// private String recName;
|
||||
//
|
||||
// /**
|
||||
// * 收货电话
|
||||
// */
|
||||
// @Excel(name = "收货电话")
|
||||
// private String recPhone;
|
||||
//
|
||||
// /**
|
||||
// * 收货地址
|
||||
// */
|
||||
// @Excel(name = "收货地址")
|
||||
// private String recAddress;
|
||||
|
||||
/**
|
||||
* 收货电话
|
||||
*/
|
||||
@Excel(name = "收货电话")
|
||||
private String recPhone;
|
||||
|
||||
/**
|
||||
* 收货地址
|
||||
*/
|
||||
@Excel(name = "收货地址")
|
||||
private String recAddress;
|
||||
|
||||
/**
|
||||
* 发货单号
|
||||
*/
|
||||
@Excel(name = "发货单号")
|
||||
@Excel(name = "订单号")
|
||||
private String deliverCode;
|
||||
|
||||
/**
|
||||
* 物流公司
|
||||
*/
|
||||
@Excel(name = "物流公司")
|
||||
@Excel(name = "快递公司")
|
||||
private String logisticsCompany;
|
||||
/**
|
||||
* 物流单号
|
||||
*/
|
||||
@Excel(name = "物流单号")
|
||||
@Excel(name = "快递单号")
|
||||
private String logisticsCode;
|
||||
|
||||
}
|
||||
|
|
|
@ -10,11 +10,7 @@ import lombok.Data;
|
|||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @Description: 发货单已合并列表VO
|
||||
* @Author: jiang chao
|
||||
* @Time: 2022/11/5 15:51
|
||||
* @Classname: DeliverHandledVO
|
||||
* @PackageName: com.hzs.sale.deliver.vo
|
||||
* 发货单已合并列表VO
|
||||
*/
|
||||
@Data
|
||||
public class DeliverHandledVO {
|
||||
|
@ -102,6 +98,13 @@ public class DeliverHandledVO {
|
|||
*/
|
||||
@Excel(name = "产品编号")
|
||||
private String productCode;
|
||||
|
||||
/**
|
||||
* 产品编号
|
||||
*/
|
||||
@Excel(name = "仓储编号")
|
||||
private String wmsCode;
|
||||
|
||||
/**
|
||||
* 产品名称
|
||||
*/
|
||||
|
|
|
@ -11,11 +11,7 @@ import java.math.BigDecimal;
|
|||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @Description: 发货单未合并列表VO
|
||||
* @Author: jiang chao
|
||||
* @Time: 2022/11/4 11:29
|
||||
* @Classname: DeliverUnhandledVO
|
||||
* @PackageName: com.hzs.sale.deliver.vo
|
||||
* 发货单未合并列表VO
|
||||
*/
|
||||
@Data
|
||||
public class DeliverUnhandledVO {
|
||||
|
|
|
@ -0,0 +1,106 @@
|
|||
package com.hzs.sale.deliver.vo;
|
||||
|
||||
import com.hzs.common.core.annotation.Excel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 发货单WMS导出VO
|
||||
*/
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public class DeliverWmsVO implements Serializable {
|
||||
|
||||
@Excel(name = "<必填>订单号")
|
||||
private String deliverCode;
|
||||
|
||||
@Excel(name = "下单时间")
|
||||
private String createTime;
|
||||
@Excel(name = "付款时间")
|
||||
private String payTime;
|
||||
|
||||
@Excel(name = "交易类型")
|
||||
private String payType;
|
||||
@Excel(name = "业务员")
|
||||
private String peopleName;
|
||||
@Excel(name = "备注")
|
||||
private String orderRemark;
|
||||
@Excel(name = "买家留言")
|
||||
private String buyRemark;
|
||||
@Excel(name = "系统备注")
|
||||
private String sysRemark;
|
||||
@Excel(name = "仓库")
|
||||
private String storeName;
|
||||
@Excel(name = "总金额")
|
||||
private BigDecimal totalAmount;
|
||||
@Excel(name = "运费")
|
||||
private String postAmount;
|
||||
@Excel(name = "实付总额")
|
||||
private String realTotalAmount;
|
||||
@Excel(name = "本次收款")
|
||||
private String receiveAmount;
|
||||
@Excel(name = "结算账户")
|
||||
private String settleAccount;
|
||||
|
||||
@Excel(name = "<必填>收货人姓名")
|
||||
private String recName;
|
||||
|
||||
@Excel(name = "手机")
|
||||
private String recPhone;
|
||||
|
||||
@Excel(name = "固话")
|
||||
private String fixedPhone;
|
||||
|
||||
@Excel(name = "<必填>地址")
|
||||
private String recAddress;
|
||||
|
||||
@Excel(name = "邮编")
|
||||
private String postal;
|
||||
|
||||
@Excel(name = "电子邮箱")
|
||||
private String email;
|
||||
|
||||
@Excel(name = "<必填>商品编码")
|
||||
private String wmsCode;
|
||||
|
||||
@Excel(name = "产品名称")
|
||||
private String productName;
|
||||
|
||||
@Excel(name = "规格名称")
|
||||
private String specsName;
|
||||
|
||||
@Excel(name = "<必填>数量")
|
||||
private Integer quantity;
|
||||
|
||||
@Excel(name = "单价")
|
||||
private BigDecimal price;
|
||||
|
||||
@Excel(name = "实付")
|
||||
private BigDecimal realPay;
|
||||
|
||||
@Excel(name = "配送方式")
|
||||
private String delivery;
|
||||
|
||||
@Excel(name = "明细备注")
|
||||
private String remark;
|
||||
|
||||
@Excel(name = "批次号")
|
||||
private String batchNo;
|
||||
|
||||
@Excel(name = "生产日期")
|
||||
private String produceDate;
|
||||
|
||||
@Excel(name = "过期日期")
|
||||
private String expireDate;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -251,4 +251,9 @@ public class ProductParams implements Serializable {
|
|||
*/
|
||||
private Date removalTime;
|
||||
|
||||
/**
|
||||
* 仓储产品编号
|
||||
*/
|
||||
private String wmsCode;
|
||||
|
||||
}
|
||||
|
|
|
@ -13,11 +13,7 @@ import org.apache.ibatis.annotations.Param;
|
|||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: 产品相关mapper
|
||||
* @Author: yuhui
|
||||
* @Time: 2022/8/29 10:59
|
||||
* @Classname: BdProductMapper
|
||||
* @PackageName: com.hzs.sale.product.mapper
|
||||
* 产品相关mapper
|
||||
*/
|
||||
public interface BdProductMapper extends BaseMapper<BdProduct> {
|
||||
|
||||
|
@ -37,10 +33,7 @@ public interface BdProductMapper extends BaseMapper<BdProduct> {
|
|||
List<ProductVo> selectByQueryList(ProductParams productParams);
|
||||
|
||||
/*
|
||||
* @description: 根据规格、主键查询产品
|
||||
* @author: sui q
|
||||
* @date: 2023/11/27 15:52
|
||||
* @param: null null
|
||||
* 根据规格、主键查询产品
|
||||
**/
|
||||
List<BdProductExt> queryProductExtBySpecsId(@Param("productSpecsList") List<BdProductSpecs> productSpecsList, @Param("pkCountry") Integer pkCountry);
|
||||
|
||||
|
|
|
@ -108,6 +108,10 @@ public class BdProductServiceImpl extends ServiceImpl<BdProductMapper, BdProduct
|
|||
bdProduct.setPkSupplier(cubasdoc.getPkSupplier());
|
||||
}
|
||||
}
|
||||
if (StringUtils.isEmpty(bdProduct.getWmsCode())) {
|
||||
// 仓储产品编号为空,则默认使用产品编号
|
||||
bdProduct.setWmsCode(bdProduct.getProductCode());
|
||||
}
|
||||
this.save(bdProduct);
|
||||
// 生成拓展表
|
||||
BdProductExtend productExtend = BeanUtil.copyProperties(productParams, BdProductExtend.class);
|
||||
|
@ -218,16 +222,6 @@ public class BdProductServiceImpl extends ServiceImpl<BdProductMapper, BdProduct
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除产品规格明细 bas
|
||||
*
|
||||
* @param pkProductBasList
|
||||
* @return
|
||||
*/
|
||||
private void removeProductBasSpecs(List<Integer> pkProductBasList) {
|
||||
productBasSpecsServiceApi.removeByPkProductBasList(pkProductBasList);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateProduct(ProductParams productParams, LoginUser loginUser) {
|
||||
|
@ -243,6 +237,10 @@ public class BdProductServiceImpl extends ServiceImpl<BdProductMapper, BdProduct
|
|||
if (productParams.getIsPutOn().equals(EYesNo.NO.getIntValue())) {
|
||||
bdProduct.setRemovalTime(DateUtils.currentDateTime());
|
||||
}
|
||||
if (StringUtils.isEmpty(bdProduct.getWmsCode())) {
|
||||
// 仓储产品编号为空,则默认使用产品编号
|
||||
bdProduct.setWmsCode(bdProduct.getProductCode());
|
||||
}
|
||||
this.updateById(bdProduct);
|
||||
// 生成拓展表
|
||||
BdProductExtend productExtend = BeanUtil.copyProperties(productParams, BdProductExtend.class);
|
||||
|
|
|
@ -1,27 +1,14 @@
|
|||
package com.hzs.sale.product.vo;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.hzs.common.core.annotation.BigDecimalFormat;
|
||||
import com.hzs.common.core.annotation.Excel;
|
||||
import com.hzs.common.core.web.domain.BaseEntity;
|
||||
import com.hzs.common.domain.sale.product.BdProduct;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @Description:
|
||||
* @Author: yuhui
|
||||
* @Time: 2022/10/28 16:26
|
||||
* @Classname: ProductVo
|
||||
* @PackageName: com.hzs.sale.product.vo
|
||||
*/
|
||||
@Data
|
||||
public class ProductVo implements Serializable {
|
||||
|
||||
|
@ -297,5 +284,9 @@ public class ProductVo implements Serializable {
|
|||
*/
|
||||
private Integer pkCubasdoc;
|
||||
|
||||
/**
|
||||
* 仓储产品编号
|
||||
*/
|
||||
private String wmsCode;
|
||||
|
||||
}
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
<result column="SHIPPING_CHANNEL" property="shippingChannel"/>
|
||||
<result column="REPURCHASE_TYPE" property="repurchaseType"/>
|
||||
<result column="SYSTEM_TYPE" property="systemType"/>
|
||||
<result column="WMS_CODE" property="wmsCode"/>
|
||||
<collection property="specsList" ofType="com.hzs.common.domain.sale.classify.BdSpecs">
|
||||
<result column="PK_SPECS_ID" property="pkId"/>
|
||||
<result column="PK_SPECS_TYPE" property="pkSpecsType"/>
|
||||
|
@ -75,6 +76,7 @@
|
|||
<result column="IS_PUT_ON" property="isPutOn"/>
|
||||
<result column="LISTING_TIME" property="listingTime"/>
|
||||
<result column="REMOVAL_TIME" property="removalTime"/>
|
||||
<result column="WMS_CODE" property="wmsCode"/>
|
||||
</resultMap>
|
||||
|
||||
<select id="getLastProductCode" resultType="string">
|
||||
|
|
|
@ -170,4 +170,10 @@ public class BdProduct extends BaseEntity {
|
|||
@TableField("SYSTEM_TYPE")
|
||||
private Integer systemType;
|
||||
|
||||
/**
|
||||
* 仓储产品编号
|
||||
*/
|
||||
@TableField("WMS_CODE")
|
||||
private String wmsCode;
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue