Browse Source

完善销售单

master
fanzongzhe 10 months ago
parent
commit
d1fdf899ab
  1. 70
      yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbill/SmsSalesBillService.java
  2. 1
      yxt-sms-biz/src/main/java/com/yxt/sms/feign/wms/wmsinventory/WmsInventory.java
  3. 5
      yxt-sms-biz/src/main/java/com/yxt/sms/feign/wms/wmsinventory/WmsInventoryFeign.java
  4. 7
      yxt-sms-biz/src/main/java/com/yxt/sms/feign/wms/wmsinventory/WmsInventoryFeignFallback.java
  5. 116
      yxt-sms-biz/src/main/java/com/yxt/sms/feign/wms/wmsinventoryrecord/WmsInventoryRecordDto.java
  6. 32
      yxt-sms-biz/src/main/java/com/yxt/sms/feign/wms/wmsinventoryrecord/WmsInventoryRecordFeign.java
  7. 6
      yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryRest.java
  8. 2
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.java
  9. 3
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.xml
  10. 6
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryService.java

70
yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbill/SmsSalesBillService.java

@ -47,6 +47,8 @@ import com.yxt.sms.feign.portal.sysorganization.SysOrganizationVo;
import com.yxt.sms.feign.privilege.PrivilegeQuery; import com.yxt.sms.feign.privilege.PrivilegeQuery;
import com.yxt.sms.feign.sysuser.SysUserFeign; import com.yxt.sms.feign.sysuser.SysUserFeign;
import com.yxt.sms.feign.wms.wmsinventory.*; import com.yxt.sms.feign.wms.wmsinventory.*;
import com.yxt.sms.feign.wms.wmsinventoryrecord.WmsInventoryRecordDto;
import com.yxt.sms.feign.wms.wmsinventoryrecord.WmsInventoryRecordFeign;
import com.yxt.sms.utils.SmsBillNo; import com.yxt.sms.utils.SmsBillNo;
import com.yxt.sms.utils.SmsRule; import com.yxt.sms.utils.SmsRule;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -62,9 +64,8 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList; import java.math.BigDecimal;
import java.util.Collections; import java.util.*;
import java.util.List;
/** /**
* Project: sms(sms) <br/> * Project: sms(sms) <br/>
@ -82,6 +83,8 @@ import java.util.List;
@Service @Service
public class SmsSalesBillService extends MybatisBaseService<SmsSalesBillMapper, SmsSalesBill> { public class SmsSalesBillService extends MybatisBaseService<SmsSalesBillMapper, SmsSalesBill> {
@Autowired
private WmsInventoryRecordFeign wmsInventoryRecordFeign;
@Autowired @Autowired
private SmsSalesBillDetailService smsSalesBillDetailService; private SmsSalesBillDetailService smsSalesBillDetailService;
@Autowired @Autowired
@ -408,15 +411,58 @@ public class SmsSalesBillService extends MybatisBaseService<SmsSalesBillMapper,
smsSalesBill.setState(0); smsSalesBill.setState(0);
baseMapper.updateById(smsSalesBill); baseMapper.updateById(smsSalesBill);
List<SmsSalesBillDetail> billDetailList = smsSalesBillDetailService.fetchByMainSid(sid); List<SmsSalesBillDetail> billDetailList = smsSalesBillDetailService.fetchByMainSid(sid);
// if (!billDetailList.isEmpty()) { if (!billDetailList.isEmpty()) {
// for (SmsSalesBillDetail salesBillDetail : billDetailList) { for (SmsSalesBillDetail salesBillDetail : billDetailList) {
// WmsUpdateCountQuery countQuery = new WmsUpdateCountQuery(); Map<String, BigDecimal> map = new HashMap<>();
//// countQuery.setSid(salesBillDetail.getInventorySid()); //取商品id 和 需要扣除数量
// countQuery.setCount(salesBillDetail.getCount()); String goodsID = salesBillDetail.getGoodsID();
// countQuery.setAddOrReduce(1); BigDecimal count = salesBillDetail.getCount();
// wmsInventoryFeign.updateInventoryCount(countQuery); List<WmsInventory> data = wmsInventoryFeign.getListByGoodsID(goodsID).getData();
// } if (!data.isEmpty()) {
// } for (WmsInventory inventory : data) {
if (count.compareTo(BigDecimal.ZERO) > 0) {
BigDecimal inventoryCount = inventory.getCount();
if (inventoryCount.compareTo(count) >= 0) {
map.put(inventory.getSid(), count);
count = count.subtract(inventory.getCount());
continue;
}
map.put(inventory.getSid(), inventory.getCount());
count = count.subtract(inventory.getCount());
}
}
for (Map.Entry<String, BigDecimal> entry : map.entrySet()) {
String inventorySid = entry.getKey();
BigDecimal inventoryCount = entry.getValue();
WmsInventoryRecordDto recordDto = new WmsInventoryRecordDto();
WmsInventory inventory = wmsInventoryFeign.fetchEntityBySid(inventorySid).getData();
BigDecimal wiCount = inventory.getCount();
BigDecimal subtractCount = wiCount.subtract(inventoryCount);
recordDto.setInventorySid(inventorySid);
recordDto.setCreateBySid(smsSalesBill.getCreateBySid());
recordDto.setUseOrgSid(smsSalesBill.getDeptSid());
recordDto.setCreateOrgSid(smsSalesBill.getCreateOrgSid());
recordDto.setHandlerSid(smsSalesBill.getCreateBySid());
recordDto.setHandlerName(smsSalesBill.getCreateByName());
recordDto.setGoodsID(goodsID);
recordDto.setSourceBillSid(sid);
recordDto.setBillNo(smsSalesBill.getBillNo());
recordDto.setBillType("0");
recordDto.setBusTypeKey("11");
recordDto.setBusTypeValue("销售出库");
BeanUtil.copyProperties(inventory, recordDto, "sid", "createBySid");
recordDto.setCount(inventoryCount.toString());
recordDto.setCurrentCount(subtractCount.toString());
wmsInventoryRecordFeign.save(recordDto);
WmsUpdateCountQuery countQuery = new WmsUpdateCountQuery();
countQuery.setSid(inventorySid);
countQuery.setCount(inventoryCount);
countQuery.setAddOrReduce(1);
wmsInventoryFeign.updateInventoryCount(countQuery);
}
}
}
}
} }
return rb.success(); return rb.success();
} }

1
yxt-sms-biz/src/main/java/com/yxt/sms/feign/wms/wmsinventory/WmsInventory.java

@ -43,6 +43,7 @@ public class WmsInventory extends BaseEntity {
private String warehouseArea;//库区名称 private String warehouseArea;//库区名称
private String warehouseRackSid;//货架sid private String warehouseRackSid;//货架sid
private String warehouseRackName;//货架名称 private String warehouseRackName;//货架名称
private String warehouseRackCode;
private int isShowDiscount;//是否显示折扣标志 private int isShowDiscount;//是否显示折扣标志
private Date firstInDate;//首次入库日期-计算库龄的依据 private Date firstInDate;//首次入库日期-计算库龄的依据
private String lockCount;//锁定数量,计算字段,出库申请通过,但未实际出库 private String lockCount;//锁定数量,计算字段,出库申请通过,但未实际出库

5
yxt-sms-biz/src/main/java/com/yxt/sms/feign/wms/wmsinventory/WmsInventoryFeign.java

@ -5,6 +5,7 @@ import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo; import com.yxt.common.core.vo.PagerVo;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
@ -34,4 +35,8 @@ public interface WmsInventoryFeign {
@ApiOperation("根据Sid获取库存实体") @ApiOperation("根据Sid获取库存实体")
@PostMapping("/fetchEntityBySid") @PostMapping("/fetchEntityBySid")
ResultBean<WmsInventory> fetchEntityBySid(@RequestParam("sid") String sid); ResultBean<WmsInventory> fetchEntityBySid(@RequestParam("sid") String sid);
@ApiOperation("根据goodsID获取数据")
@GetMapping("/getListByGoodsID")
public ResultBean<List<WmsInventory>> getListByGoodsID(@RequestParam("goodsID") String goodsID);
} }

7
yxt-sms-biz/src/main/java/com/yxt/sms/feign/wms/wmsinventory/WmsInventoryFeignFallback.java

@ -62,4 +62,9 @@ public class WmsInventoryFeignFallback implements WmsInventoryFeign {
public ResultBean<WmsInventory> fetchEntityBySid(String sid) { public ResultBean<WmsInventory> fetchEntityBySid(String sid) {
return null; return null;
} }
}
@Override
public ResultBean<List<WmsInventory>> getListByGoodsID(String goodsID) {
return null;
}
}

116
yxt-sms-biz/src/main/java/com/yxt/sms/feign/wms/wmsinventoryrecord/WmsInventoryRecordDto.java

@ -0,0 +1,116 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.sms.feign.wms.wmsinventoryrecord;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* Project: wms(yxt) <br/>
* File: WmsInventoryRecordDto.java <br/>
* Class: inventroy.api.wmsinventoryrecord.WmsInventoryRecordDto <br/>
* Description: 库存出入库记录 数据传输对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2024-04-08 17:27:39 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Data
@ApiModel(value = "库存出入库记录 数据传输对象", description = "库存出入库记录 数据传输对象")
public class WmsInventoryRecordDto implements Dto {
private String sid; // sid
@ApiModelProperty("库存sid")
private String inventorySid; // 库存sid
@ApiModelProperty("创建人sid")
private String createBySid; // 商品ID
@ApiModelProperty("商品ID")
private String goodsID; // 商品ID
@ApiModelProperty("来源单sid(业务单sid)")
private String sourceBillSid; // 来源单sid(业务单sid)
@ApiModelProperty("来源单据编号")
private String billNo; // 来源单据编号
@ApiModelProperty("单据类型(1入库、0出库)")
private String billType; // 单据类型(1入库、0出库)
@ApiModelProperty("业务类型key(采购入库、维修出入库、销售出入库等)")
private String busTypeKey; // 业务类型key(采购入库、维修出入库、销售出入库等)
@ApiModelProperty("业务类型value(采购入库、调拨入库、退货入库、盘盈入库等销售出库、调拨出库、采购退货出库、报损出库、盘亏出库等)")
private String busTypeValue; // 业务类型value(采购入库、调拨入库、退货入库、盘盈入库等销售出库、调拨出库、采购退货出库、报损出库、盘亏出库等)
@ApiModelProperty("客户/供应商sid,出库是为客户,入库时为供应商")
private String billObjSid; // 客户/供应商sid,出库是为客户,入库时为供应商
@ApiModelProperty("客户/供应商名称")
private String billObjName; // 客户/供应商名称
@ApiModelProperty("批次号")
private String batchNumber; // 批次号
@ApiModelProperty("商品基础信息Sid")
private String goodSpuSid; // 商品基础信息Sid
@ApiModelProperty("商品名称")
private String goodsSpuName; // 商品名称
@ApiModelProperty("商品Skusid")
private String goodsSkuSid; // 商品Skusid
@ApiModelProperty("商品Sku名称")
private String goodsSkuTitle; // 商品Sku名称
@ApiModelProperty("商品编码(图号)")
private String goodsSkuCode; // 商品编码(图号)
@ApiModelProperty("规格型号")
private String goodsSkuOwnSpec; // 规格型号
@ApiModelProperty("出入库后的库存量")
private String currentCount; // 出入库后的库存量
@ApiModelProperty("计量单位")
private String unit; // 计量单位
@ApiModelProperty("数量")
private String count; // 数量
@ApiModelProperty("仓库sid")
private String warehouseSid; // 仓库sid
@ApiModelProperty("仓库名称")
private String warehouseName; // 仓库名称
@ApiModelProperty("库位sid")
private String warehouseRackSid; // 库位sid
@ApiModelProperty("库位编号")
private String warehouseRackCode; // 库位编号
@ApiModelProperty("入库单价")
private String cost;
@ApiModelProperty("税率")
private String tax;
@ApiModelProperty("入库金额")
private String amount;
@ApiModelProperty("经办人sid")
private String handlerSid; // 库位sid
@ApiModelProperty("经办人")
private String handlerName; // 库位编号
@ApiModelProperty("创建组织sid")
private String createOrgSid;
@ApiModelProperty("使用组织sid")
private String useOrgSid;
}

32
yxt-sms-biz/src/main/java/com/yxt/sms/feign/wms/wmsinventoryrecord/WmsInventoryRecordFeign.java

@ -0,0 +1,32 @@
package com.yxt.sms.feign.wms.wmsinventoryrecord;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.sms.feign.wms.wmsinventory.*;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* @description: 库存记录
* @author: fzz
* @date: 2024/3/7
**/
@FeignClient(
contextId = "yxt-wms-WmsInventoryRecord",
name = "yxt-wms",
path = "apiadmin/inventory/wmsinventoryrecord"
)
public interface WmsInventoryRecordFeign {
@ApiOperation("新增或修改")
@PostMapping("/save")
public ResultBean save(@RequestBody WmsInventoryRecordDto dto);
}

6
yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryRest.java

@ -34,6 +34,12 @@ public class WmsInventoryRest {
HttpServletResponse response; HttpServletResponse response;
@ApiOperation("根据goodsID获取数据")
@GetMapping("/getListByGoodsID")
public ResultBean<List<WmsInventory>> getListByGoodsID(@RequestParam("goodsID") String goodsID) {
return wmsInventoryService.getListByGoodsID(goodsID);
}
@ApiOperation("分页列表") @ApiOperation("分页列表")
@PostMapping("/listPage") @PostMapping("/listPage")
public ResultBean<PagerVo<WmsInventoryVo>> listPage(@RequestBody PagerQuery<WmsInventoryQuery> pq) { public ResultBean<PagerVo<WmsInventoryVo>> listPage(@RequestBody PagerQuery<WmsInventoryQuery> pq) {

2
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.java

@ -50,4 +50,6 @@ public interface WmsInventoryMapper extends BaseMapper<WmsInventory> {
IPage<WmsInventoryReturnSelectList> returnGoodsListPage(IPage<WmsInventory> page, @Param(Constants.WRAPPER) QueryWrapper<WmsInventory> qw); IPage<WmsInventoryReturnSelectList> returnGoodsListPage(IPage<WmsInventory> page, @Param(Constants.WRAPPER) QueryWrapper<WmsInventory> qw);
IPage<WmsInventoryHandleSelectList> handleGoodsListPage(IPage<WmsInventory> page, @Param(Constants.WRAPPER) QueryWrapper<WmsInventory> qw); IPage<WmsInventoryHandleSelectList> handleGoodsListPage(IPage<WmsInventory> page, @Param(Constants.WRAPPER) QueryWrapper<WmsInventory> qw);
List<WmsInventory> getListByGoodsID(@Param("goodsID") String goodsID);
} }

3
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.xml

@ -288,4 +288,7 @@
${ew.sqlSegment} ${ew.sqlSegment}
</where> </where>
</select> </select>
<select id="getListByGoodsID" resultType="com.yxt.wms.biz.inventory.wmsinventory.WmsInventory">
select * from wms_inventory wi where wi.goodsID =#{goodsID} and wi.count > 0
</select>
</mapper> </mapper>

6
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryService.java

@ -496,4 +496,10 @@ public class WmsInventoryService extends MybatisBaseService<WmsInventoryMapper,
PagerVo<WmsInventoryHandleSelectList> p = PagerUtil.pageToVo(pagging, null); PagerVo<WmsInventoryHandleSelectList> p = PagerUtil.pageToVo(pagging, null);
return rb.success().setData(p); return rb.success().setData(p);
} }
public ResultBean<List<WmsInventory>> getListByGoodsID(String goodsID) {
ResultBean rb = ResultBean.fireFail();
List<WmsInventory> list = baseMapper.getListByGoodsID(goodsID);
return rb.setData(list);
}
} }

Loading…
Cancel
Save