|
|
@ -26,19 +26,29 @@ |
|
|
|
package com.yxt.sms.biz.smssalesbill; |
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil; |
|
|
|
import cn.hutool.core.date.DateUtil; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
import com.yxt.sms.biz.smsgoods.SmsGoods; |
|
|
|
import com.yxt.sms.biz.smsgoods.SmsGoodsService; |
|
|
|
import com.yxt.sms.biz.smssalesbill.report.*; |
|
|
|
import com.yxt.sms.biz.smssalesbillaitem.SmsSalesBillAitem; |
|
|
|
import com.yxt.sms.biz.smssalesbillaitem.SmsSalesBillAitemService; |
|
|
|
import com.yxt.sms.biz.smssalesbilldetail.SmsSalesBillDetail; |
|
|
|
import com.yxt.sms.biz.smssalesbilldetail.SmsSalesBillDetailService; |
|
|
|
import com.yxt.sms.biz.smssalesbillinvoice.SmsSalesBillInvoice; |
|
|
|
import com.yxt.sms.biz.smssalesbillinvoice.SmsSalesBillInvoiceService; |
|
|
|
import com.yxt.sms.biz.smssalesbillsettle.SmsSalesBillSettle; |
|
|
|
import com.yxt.sms.biz.smssalesbillsettle.SmsSalesBillSettleService; |
|
|
|
import com.yxt.sms.feign.fms.fmsreceivesettle.FmsReceivesettle; |
|
|
|
import com.yxt.sms.feign.fms.fmsreceivesettle.FmsReceivesettleDto; |
|
|
|
import com.yxt.sms.feign.fms.fmsreceivesettle.FmsReceivesettleFeign; |
|
|
|
import com.yxt.sms.feign.portal.sysorganization.SysOrganizationFeign; |
|
|
|
import com.yxt.sms.feign.portal.sysorganization.SysOrganizationVo; |
|
|
|
import com.yxt.sms.feign.privilege.PrivilegeQuery; |
|
|
|
import com.yxt.sms.feign.sysuser.SysUserFeign; |
|
|
|
import com.yxt.sms.feign.wms.wmsinventory.*; |
|
|
|
import com.yxt.sms.utils.SmsBillNo; |
|
|
|
import com.yxt.sms.utils.SmsRule; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
import com.yxt.common.base.service.MybatisBaseService; |
|
|
|
import com.yxt.common.base.utils.PagerUtil; |
|
|
@ -82,45 +92,132 @@ public class SmsSalesBillService extends MybatisBaseService<SmsSalesBillMapper, |
|
|
|
private SmsSalesBillSettleService smsSalesBillSettleService; |
|
|
|
@Resource |
|
|
|
private FmsReceivesettleFeign fmsReceivesettleFeign; |
|
|
|
@Autowired |
|
|
|
private SmsSalesBillAitemService smsSalesBillAitemService; |
|
|
|
@Autowired |
|
|
|
private SmsGoodsService smsGoodsService; |
|
|
|
@Autowired |
|
|
|
private SysUserFeign sysUserFeign; |
|
|
|
@Autowired |
|
|
|
private SysOrganizationFeign sysOrganizationFeign; |
|
|
|
|
|
|
|
private QueryWrapper<SmsSalesBill> createQueryWrapper(SmsSalesBillQuery query) { |
|
|
|
// todo: 这里根据具体业务调整查询条件
|
|
|
|
// 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName()));
|
|
|
|
QueryWrapper<SmsSalesBill> qw = new QueryWrapper<>(); |
|
|
|
if (StringUtils.isNotBlank(query.getQueryName())) { |
|
|
|
qw.and(wrapper -> wrapper.like("createByName", query.getQueryName()) |
|
|
|
.or().like("billNo", query.getQueryName()) |
|
|
|
.or().like("salesName", query.getQueryName()) |
|
|
|
.or().like("customerName", query.getQueryName()) |
|
|
|
.or().like("mobile", query.getQueryName()) |
|
|
|
.or().like("vehMark", query.getQueryName()) |
|
|
|
); |
|
|
|
} |
|
|
|
String startDate = query.getStartDate(); |
|
|
|
String endDate = query.getEndDate(); |
|
|
|
qw.apply(StringUtils.isNotEmpty(startDate), "date_format (createTime,'%Y-%m-%d') >= date_format('" + startDate + "','%Y-%m-%d')"). |
|
|
|
apply(StringUtils.isNotEmpty(endDate), "date_format (createTime,'%Y-%m-%d') <= date_format('" + endDate + "','%Y-%m-%d')" |
|
|
|
); |
|
|
|
qw.eq("1", "1"); |
|
|
|
qw.orderByDesc("createTime"); |
|
|
|
return qw; |
|
|
|
} |
|
|
|
|
|
|
|
public PagerVo<SmsSalesBillVo> listPageVo(PagerQuery<SmsSalesBillQuery> pq) { |
|
|
|
SmsSalesBillQuery query = pq.getParams(); |
|
|
|
QueryWrapper<SmsSalesBill> qw = createQueryWrapper(query); |
|
|
|
QueryWrapper<SmsSalesBill> qw = new QueryWrapper<>(); |
|
|
|
//========================================数据授权开始
|
|
|
|
if (StringUtils.isNotBlank(query.getMenuUrl())) { |
|
|
|
PrivilegeQuery privilegeQuery = new PrivilegeQuery(); |
|
|
|
privilegeQuery.setOrgPath(query.getOrgPath()); |
|
|
|
privilegeQuery.setMenuUrl(query.getMenuUrl()); |
|
|
|
privilegeQuery.setUserSid(query.getUserSid()); |
|
|
|
ResultBean<String> defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery); |
|
|
|
if (StringUtils.isNotBlank(defaultIdReltBean.getData())) { |
|
|
|
//数据权限ID(1集团、2事业部、3分公司、4部门、5个人)
|
|
|
|
String orgSidPath = query.getOrgPath(); |
|
|
|
orgSidPath = orgSidPath + "/"; |
|
|
|
int i1 = orgSidPath.indexOf("/"); |
|
|
|
int i2 = orgSidPath.indexOf("/", i1 + 1); |
|
|
|
int i3 = orgSidPath.indexOf("/", i2 + 1); |
|
|
|
int i4 = orgSidPath.indexOf("/", i3 + 1); |
|
|
|
String orgLevelKey = defaultIdReltBean.getData(); |
|
|
|
if ("1".equals(orgLevelKey)) { |
|
|
|
orgSidPath = orgSidPath.substring(0, i1); |
|
|
|
qw.like("s.orgSidPath", orgSidPath); |
|
|
|
} else if ("2".equals(orgLevelKey)) { |
|
|
|
orgSidPath = orgSidPath.substring(0, i2); |
|
|
|
qw.like("s.orgSidPath", orgSidPath); |
|
|
|
} else if ("3".equals(orgLevelKey)) { |
|
|
|
orgSidPath = orgSidPath.substring(0, i3); |
|
|
|
qw.like("s.orgSidPath", orgSidPath); |
|
|
|
} else if ("4".equals(orgLevelKey)) { |
|
|
|
orgSidPath = orgSidPath.substring(0, i4); |
|
|
|
qw.like("s.orgSidPath", orgSidPath); |
|
|
|
} else if ("5".equals(orgLevelKey)) { |
|
|
|
qw.eq("a.createBySid", query.getUserSid()); |
|
|
|
} else { |
|
|
|
PagerVo<SmsSalesBillVo> p = new PagerVo<>(); |
|
|
|
return p; |
|
|
|
} |
|
|
|
} else { |
|
|
|
PagerVo<SmsSalesBillVo> p = new PagerVo<>(); |
|
|
|
return p; |
|
|
|
} |
|
|
|
} |
|
|
|
if (StringUtils.isNotBlank(query.getUseOrgName())) { |
|
|
|
qw.like("b.`name`", query.getUseOrgName()); |
|
|
|
} |
|
|
|
if (StringUtils.isNotBlank(query.getDeptName())) { |
|
|
|
qw.like("a.deptName", query.getDeptName()); |
|
|
|
} |
|
|
|
if (StringUtils.isNotBlank(query.getCreateByName())) { |
|
|
|
qw.like("a.createByName", query.getCreateByName()); |
|
|
|
} |
|
|
|
if (StringUtils.isNotBlank(query.getBillNo())) { |
|
|
|
qw.like("a.billNo", query.getBillNo()); |
|
|
|
} |
|
|
|
if (StringUtils.isNotBlank(query.getCustomerName())) { |
|
|
|
qw.like("a.customerName", query.getCustomerName()); |
|
|
|
} |
|
|
|
if (StringUtils.isNotBlank(query.getVehMark())) { |
|
|
|
qw.like("a.vehMark", query.getVehMark()); |
|
|
|
} |
|
|
|
if (StringUtils.isNotBlank(query.getVinNo())) { |
|
|
|
qw.like("a.vinNo", query.getVinNo()); |
|
|
|
} |
|
|
|
String createStartTime = query.getStartDate(); |
|
|
|
String createEndTime = query.getEndDate(); |
|
|
|
qw.apply(StringUtils.isNotEmpty(createStartTime), "date_format (a.createTime,'%Y-%m-%d') >= date_format('" + createStartTime + "','%Y-%m-%d')"). |
|
|
|
apply(StringUtils.isNotEmpty(createEndTime), "date_format (a.createTime,'%Y-%m-%d') <= date_format('" + createEndTime + "','%Y-%m-%d')" |
|
|
|
); |
|
|
|
if (StringUtils.isNotBlank(query.getSalesName())) { |
|
|
|
qw.like("a.salesName", query.getSalesName()); |
|
|
|
} |
|
|
|
IPage<SmsSalesBill> page = PagerUtil.queryToPage(pq); |
|
|
|
IPage<SmsSalesBillVo> pagging = baseMapper.selectPageVo(page, qw); |
|
|
|
PagerVo<SmsSalesBillVo> p = PagerUtil.pageToVo(pagging, null); |
|
|
|
return p; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 生成单据编号 |
|
|
|
* |
|
|
|
* @param orgSid |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
public String getApplyCode(String orgSid) { |
|
|
|
//获取分公司sid
|
|
|
|
ResultBean<SysOrganizationVo> resultBean1 = sysOrganizationFeign.fetchBySid(orgSid); |
|
|
|
String orgCode = resultBean1.getData().getOrgCode(); |
|
|
|
SmsBillNo b = new SmsBillNo(); |
|
|
|
b.setOrgCode(orgCode); |
|
|
|
b.setBillType("XSD"); |
|
|
|
String bill = SmsRule.getBill(b); |
|
|
|
int i = baseMapper.selectNum(bill); |
|
|
|
String billNo = SmsRule.getBillNo(bill, i); |
|
|
|
return billNo; |
|
|
|
} |
|
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public String saveOrUpdateDto(SmsSalesBillDto dto) { |
|
|
|
String dtoSid = dto.getSid(); |
|
|
|
if (StringUtils.isBlank(dtoSid)) { |
|
|
|
SmsSalesBill entity = new SmsSalesBill(); |
|
|
|
BeanUtil.copyProperties(dto, entity, "id", "sid"); |
|
|
|
String applyCode = getApplyCode(dto.getCreateOrgSid()); |
|
|
|
entity.setBillNo(applyCode); |
|
|
|
baseMapper.insert(entity); |
|
|
|
SalesInvoiceVo invoiceVo = dto.getInvoiceVo(); |
|
|
|
if (null != invoiceVo) { |
|
|
@ -138,6 +235,15 @@ public class SmsSalesBillService extends MybatisBaseService<SmsSalesBillMapper, |
|
|
|
smsSalesBillDetailService.insert(salesBillDetail); |
|
|
|
} |
|
|
|
} |
|
|
|
List<SmsAttachitemVo> smsAttachitemVos = dto.getAitemVos(); |
|
|
|
if (!smsAttachitemVos.isEmpty()) { |
|
|
|
for (SmsAttachitemVo smsAttachitemVo : smsAttachitemVos) { |
|
|
|
SmsSalesBillAitem aitem = new SmsSalesBillAitem(); |
|
|
|
BeanUtil.copyProperties(smsAttachitemVo, aitem, "id", "sid"); |
|
|
|
aitem.setBillSid(entity.getSid()); |
|
|
|
smsSalesBillAitemService.insert(aitem); |
|
|
|
} |
|
|
|
} |
|
|
|
return entity.getSid(); |
|
|
|
} |
|
|
|
SmsSalesBill smsSalesBill = fetchBySid(dtoSid); |
|
|
@ -146,6 +252,7 @@ public class SmsSalesBillService extends MybatisBaseService<SmsSalesBillMapper, |
|
|
|
baseMapper.updateById(smsSalesBill); |
|
|
|
smsSalesBillDetailService.delByMainSid(dtoSid); |
|
|
|
smsSalesBillInvoiceService.delByMainSid(dtoSid); |
|
|
|
smsSalesBillAitemService.delByBillSid(dtoSid); |
|
|
|
SalesInvoiceVo invoiceVo = dto.getInvoiceVo(); |
|
|
|
if (null != invoiceVo) { |
|
|
|
SmsSalesBillInvoice invoice = new SmsSalesBillInvoice(); |
|
|
@ -162,6 +269,15 @@ public class SmsSalesBillService extends MybatisBaseService<SmsSalesBillMapper, |
|
|
|
smsSalesBillDetailService.insert(salesBillDetail); |
|
|
|
} |
|
|
|
} |
|
|
|
List<SmsAttachitemVo> smsAttachitemVos = dto.getAitemVos(); |
|
|
|
if (!smsAttachitemVos.isEmpty()) { |
|
|
|
for (SmsAttachitemVo smsAttachitemVo : smsAttachitemVos) { |
|
|
|
SmsSalesBillAitem aitem = new SmsSalesBillAitem(); |
|
|
|
BeanUtil.copyProperties(smsAttachitemVo, aitem, "id", "sid"); |
|
|
|
aitem.setBillSid(dtoSid); |
|
|
|
smsSalesBillAitemService.insert(aitem); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return dtoSid; |
|
|
|
} |
|
|
@ -188,11 +304,18 @@ public class SmsSalesBillService extends MybatisBaseService<SmsSalesBillMapper, |
|
|
|
List<SalesGoodsVo> goodsVos = new ArrayList<>(); //商品信息
|
|
|
|
if (null != entity) { |
|
|
|
BeanUtil.copyProperties(entity, vo); |
|
|
|
vo.setCreateTime(DateUtil.formatDate(entity.getCreateTime())); |
|
|
|
List<SmsSalesBillDetail> billDetailList = smsSalesBillDetailService.fetchByMainSid(sid); |
|
|
|
if (!billDetailList.isEmpty()) { |
|
|
|
for (SmsSalesBillDetail smsSalesBillDetail : billDetailList) { |
|
|
|
SalesGoodsVo salesGoodsVo = new SalesGoodsVo(); |
|
|
|
BeanUtil.copyProperties(smsSalesBillDetail, salesGoodsVo); |
|
|
|
SmsGoods goods = smsGoodsService.fetchEntityByGoodsID(smsSalesBillDetail.getGoodsID()); |
|
|
|
if (null != goods) { |
|
|
|
if (StringUtils.isNotBlank(goods.getSupplierName())) { |
|
|
|
salesGoodsVo.setSupplierName(goods.getSupplierName()); |
|
|
|
} |
|
|
|
} |
|
|
|
goodsVos.add(salesGoodsVo); |
|
|
|
} |
|
|
|
vo.setGoodsVos(goodsVos); |
|
|
@ -203,6 +326,28 @@ public class SmsSalesBillService extends MybatisBaseService<SmsSalesBillMapper, |
|
|
|
BeanUtil.copyProperties(smsSalesBillInvoice, invoiceVo); |
|
|
|
vo.setInvoiceVo(invoiceVo); |
|
|
|
} |
|
|
|
List<SmsSalesBillAitem> aitems = smsSalesBillAitemService.fetchByBillSid(sid); |
|
|
|
if (!aitems.isEmpty()) { |
|
|
|
List<SmsAttachitemVo> aitemVos = new ArrayList<>();// 附加项目
|
|
|
|
for (SmsSalesBillAitem aitem : aitems) { |
|
|
|
SmsAttachitemVo aitemVo = new SmsAttachitemVo(); |
|
|
|
if (StringUtils.isNotBlank(aitem.getAttachItemSid())) { |
|
|
|
aitemVo.setAitemsid(aitem.getAttachItemSid()); |
|
|
|
} |
|
|
|
if (StringUtils.isNotBlank(aitem.getAttachItem())) { |
|
|
|
aitemVo.setAitemName(aitem.getAttachItem()); |
|
|
|
} |
|
|
|
if (StringUtils.isNotBlank(aitem.getRemarks())) { |
|
|
|
aitemVo.setRemarks(aitem.getRemarks()); |
|
|
|
} |
|
|
|
if (null != aitem.getPrice()) { |
|
|
|
aitemVo.setPrice(aitem.getPrice().toString()); |
|
|
|
} |
|
|
|
aitemVos.add(aitemVo); |
|
|
|
} |
|
|
|
vo.setAitemVos(aitemVos); |
|
|
|
} |
|
|
|
|
|
|
|
SettlementVo settlementVo = new SettlementVo(); |
|
|
|
FmsReceivesettle receivesettle = fmsReceivesettleFeign.fetchBySourceSid(sid).getData(); |
|
|
|
if (null != receivesettle) { |
|
|
@ -253,7 +398,7 @@ public class SmsSalesBillService extends MybatisBaseService<SmsSalesBillMapper, |
|
|
|
if (!billDetailList.isEmpty()) { |
|
|
|
for (SmsSalesBillDetail salesBillDetail : billDetailList) { |
|
|
|
WmsUpdateCountQuery countQuery = new WmsUpdateCountQuery(); |
|
|
|
countQuery.setSid(salesBillDetail.getInventorySid()); |
|
|
|
// countQuery.setSid(salesBillDetail.getInventorySid());
|
|
|
|
countQuery.setCount(salesBillDetail.getCount()); |
|
|
|
countQuery.setAddOrReduce(1); |
|
|
|
wmsInventoryFeign.updateInventoryCount(countQuery); |
|
|
|