package com.gk.firework.Service.ServiceImpl;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.OrderItem;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.gk.firework.Domain.*;
|
import com.gk.firework.Domain.BO.SaleOrderDetailInfoBO;
|
import com.gk.firework.Domain.Enum.ErrorCode;
|
import com.gk.firework.Domain.Exception.BusinessException;
|
import com.gk.firework.Domain.Utils.Msg;
|
import com.gk.firework.Domain.Utils.PageInfo;
|
import com.gk.firework.Domain.Utils.StringUtils;
|
import com.gk.firework.Domain.Vo.*;
|
import com.gk.firework.Mapper.SaleOrderDetailInfoMapper;
|
import com.gk.firework.Mapper.SaleOrderInfoMapper;
|
import com.gk.firework.Mapper.UserInfoMapper;
|
import com.gk.firework.Service.*;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Propagation;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.math.BigDecimal;
|
import java.text.DateFormat;
|
import java.text.ParseException;
|
import java.text.SimpleDateFormat;
|
import java.time.Instant;
|
import java.time.LocalDateTime;
|
import java.time.format.DateTimeFormatter;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
import static com.gk.firework.Domain.Vo.EntryUtils.RK_ENTRY;
|
import static com.gk.firework.Domain.Vo.EntryUtils.TH_ENTRY;
|
|
/**
|
* @author : jingjy
|
* @date : 2021/3/30 17:30
|
*/
|
@Service("SaleOrderService")
|
public class SaleOrderServiceImpl extends ServiceImpl<SaleOrderInfoMapper, SaleOrderInfo> implements SaleOrderService {
|
@Autowired
|
private UserInfoMapper userInfoMapper;
|
@Autowired
|
private SaleOrderInfoMapper saleOrderInfoMapper;
|
@Autowired
|
private SaleOrderService saleOrderService;
|
@Autowired
|
private SaleOrderDetailService saleOrderDetailService;
|
@Autowired
|
private CustomerService customerService;
|
@Autowired
|
private StockService stockService;
|
@Autowired
|
private SaleOrderDetailInfoMapper saleOrderDetailInfoMapper;
|
@Autowired
|
private ProductService productService;
|
@Autowired
|
private UserService userService;
|
@Autowired
|
private EnterpriseService enterpriseService;
|
@Autowired
|
private EntryService entryService;
|
@Autowired
|
private DistrictService districtService;
|
@Autowired
|
private DeliveryDetailService deliveryDetailService;
|
|
@Value("${hostId}")
|
private String hostId;
|
|
private static final String RETAIL_ORDER = "1";
|
private static final String GROUP_ORDER = "2";
|
private static final String NORMAL_DELIVERY = "1";
|
public static final String OTHER_DELIVERY = "2";
|
static final String MODULE_ENTRY = "入库";
|
public static final String MODULE_DELIVERY = "出库";
|
private static final String MODULE_SALE = "销售";
|
|
@Override
|
public SaleOrderInfo createOrder(UserInfo userInfo, List<SaleOrderDetailInfoBO> detailInfoList, String type, Integer num,
|
Date salesTime, Long customerId, String pay, String total, String change, String auth) {
|
//TODO:添加订单信息及订单详情信息
|
SaleOrderInfo orderInfo = new SaleOrderInfo();
|
orderInfo.setCode(generateOrderCode(MODULE_SALE,type,new Date(),userInfo.getId()));
|
orderInfo.setType(Byte.parseByte(type));
|
orderInfo.setCreatedat(salesTime);
|
orderInfo.setCreatedby(userInfo.getUsername());
|
orderInfo.setBoxnum(new BigDecimal(num));
|
orderInfo.setPay(new BigDecimal(pay));
|
orderInfo.setChange(new BigDecimal(change));
|
orderInfo.setSalesperson(userInfo.getUsername());
|
orderInfo.setTotalprice(new BigDecimal(total));
|
orderInfo.setShop(userInfo.getCompany());
|
orderInfo.setCompanynumber(userInfo.getCompanynumber());
|
orderInfo.setCustomer(customerId);
|
for (SaleOrderDetailInfo detailInfo : detailInfoList){
|
detailInfo.setOrdercode(orderInfo.getCode());
|
detailInfo.setCreatedat(salesTime);
|
detailInfo.setCreatedby(userInfo.getUsername());
|
}
|
saleOrderService.save(orderInfo);
|
saleOrderDetailService.saveBatchOrderDetailInfo(detailInfoList.stream().map(item -> (SaleOrderDetailInfo) item).collect(Collectors.toList()));
|
|
return orderInfo;
|
}
|
|
@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
|
@Override
|
public Msg doSalesProcess(JSONObject customer, Integer num, String idCardNum, UserInfo userInfo,
|
List<SaleOrderDetailInfoBO> detailInfoList, String type, Date salesTime,
|
String pay, String total, String change, String auth) {
|
|
Msg msg = new Msg();
|
msg.setCode("200");
|
CustomerInfo customerInfo;
|
// 身份证表 存入和更新
|
try {
|
customerInfo = customerService.createOrUpdate(customer, num, salesTime);
|
} catch (ParseException e) {
|
throw new BusinessException("时间解析错误");
|
}
|
|
// CustomerInfo customerInfo = customerService.getCustomerByIdCardNum(idCardNum);
|
|
//扣库存
|
Msg result = stockService.changeStockBySale(customerInfo,detailInfoList,userInfo,salesTime);
|
if (!result.getCode().equals(ErrorCode.SUCCESS.getCode())){
|
msg = result;
|
}else {
|
//订单及详情生成
|
SaleOrderInfo saleOrderInfo = saleOrderService.createOrder(userInfo,detailInfoList,type,num,salesTime,customerInfo.getId(),pay,total,change, auth);
|
msg.setResult(saleOrderInfo);
|
}
|
return msg;
|
}
|
|
@Override
|
public List<SaleOrderDetailInfo> selectDetailByIdCardNum(String idCardNum, String directionCode) {
|
return saleOrderDetailInfoMapper.selectDetailByIdCardNumAndDire(idCardNum,directionCode);
|
}
|
|
@Override
|
public SaleOrderDetailInfo selectOrderByDirectionAndCustomer(String directionCode, CustomerInfo customerInfo) {
|
return saleOrderDetailInfoMapper.selectOrderByDirectionAndCustomer(directionCode, customerInfo.getId());
|
}
|
|
@Override
|
public void selectReturnDataGrid(PageInfo pageInfo) {
|
Page<SaleOrderDetailInfo> page = new Page<>(pageInfo.getPageIndex(), pageInfo.getPageSize());
|
|
List<OrderItem> orderItems = new ArrayList<>();
|
OrderItem orderItem = new OrderItem();
|
if (StringUtils.isNotBlank(pageInfo.getSort()) && StringUtils.isNotBlank(pageInfo.getOrder())) {
|
orderItem.setAsc(pageInfo.getOrder().equalsIgnoreCase("ascending"));
|
orderItem.setColumn(pageInfo.getSort());
|
}else {
|
orderItem.setAsc(false);
|
orderItem.setColumn("createdat");
|
}
|
orderItems.add(orderItem);
|
page.setOrders(orderItems);
|
if (StringUtils.isBlank(pageInfo.getSort())){
|
pageInfo.setSort("createdat");
|
}
|
if (StringUtils.isBlank(pageInfo.getOrder())){
|
pageInfo.setOrder("desc");
|
}
|
List<SaleOrderDetailInfo> detailInfos = saleOrderDetailInfoMapper.selectDetailDataGridByIdCardNum(pageInfo.getCondition(),page);
|
pageInfo.setResult(detailInfos);
|
pageInfo.setTotalCount(page.getTotal());
|
}
|
|
/**
|
* @Description: 按零售单位查询
|
* @date 2021/4/12 16:35
|
*/
|
@Override
|
public IPage selectSaleRecord2(Page<Map> page, Map filter, UserInfo user) {
|
Map<String, Object> params = new HashMap<>();
|
UserInfo userInfo = userService.getById(user.getId());
|
//过滤条件
|
//权限
|
{
|
params.put("enterprisenumber", userInfo.getCompanynumber());
|
params.put("province", user.getProvince());
|
params.put("city", user.getCity());
|
params.put("district", user.getArea());
|
params.put("street", user.getTown());
|
params.put("committee", user.getCommunity());
|
}
|
//基本
|
params.put("filterProvince", filter.get("province"));
|
params.put("filterCity", filter.get("city"));
|
params.put("filterDistrict", filter.get("district"));
|
params.put("filterStreet", filter.get("street"));
|
params.put("filterCommittee", filter.get("committee"));
|
params.put("starttime", filter.get("starttime"));
|
params.put("endtime", filter.get("endtime"));
|
params.put("safetysupervision", filter.get("safetysupervision"));
|
params.put("enterprisename", filter.get("enterprisename"));
|
params.put("parententerprisename", filter.get("parententerprisename"));
|
|
List<Map> list = saleOrderInfoMapper.selectSaleRecord2(page, params);
|
return page.setRecords(list);
|
}
|
|
/**
|
* @Description: 按产品查询,没有权限,显示所有产品
|
* @date 2021/4/13 8:54
|
*/
|
@Override
|
public PageInfoExtension<Map> selectSaleRecord3(Page<Map> page, Map filter, UserInfo user) {
|
|
Map<String, Object> params = new HashMap<>();
|
UserInfo userInfo = userService.getById(user.getId());
|
//权限
|
{
|
params.put("enterprisenumber", userInfo.getCompanynumber());
|
params.put("province", user.getProvince());
|
params.put("city", user.getCity());
|
params.put("district", user.getArea());
|
params.put("street", user.getTown());
|
params.put("committee", user.getCommunity());
|
}
|
//过滤条件
|
//产品流向码,产品名称
|
params.put("itemcode", filter.get("itemcode"));
|
params.put("itemname", filter.get("itemname"));
|
|
params.put("filterProvince", filter.get("province"));
|
params.put("filterCity", filter.get("city"));
|
params.put("filterDistrict", filter.get("district"));
|
params.put("filterStreet", filter.get("street"));
|
params.put("filterCommittee", filter.get("committee"));
|
params.put("starttime", filter.get("starttime"));
|
params.put("endtime", filter.get("endtime"));
|
params.put("safetysupervision", filter.get("safetysupervision"));
|
params.put("enterprisename", filter.get("enterprisename"));
|
params.put("parententerprisename", filter.get("parententerprisename"));
|
|
List<Map> list = saleOrderInfoMapper.selectSaleRecord3(page, params);
|
//统计该查询条件下所有产品销售的总箱数
|
Map sales = saleOrderInfoMapper.selectProductSales(params);
|
PageInfoExtension<Map> extension = new PageInfoExtension<>();
|
extension.setExtension(sales);
|
extension.setPageSize((int) page.getSize());
|
extension.setPageIndex((int) page.getCurrent());
|
extension.setResult(list);
|
extension.setTotalCount(page.getTotal());
|
return extension;
|
}
|
|
/**
|
* @Description: 按购买人查询
|
* @date 2021/4/13 9:07
|
*/
|
@Override
|
public IPage selectSaleRecord4(Page<Map> page, Map filter, UserInfo user) {
|
|
Map<String, Object> params = new HashMap<>();
|
UserInfo userInfo = userService.getById(user.getId());
|
//过滤条件
|
//权限
|
{
|
params.put("enterprisenumber", userInfo.getCompanynumber());
|
if (StringUtils.isNotBlank(userInfo.getCompanynumber())) {
|
List<Enterprise> subs = enterpriseService.selectSubEnterprise(userInfo.getCompanyid());
|
List<String> subList = subs.stream().map(Enterprise::getEnterprisenumber).collect(Collectors.toList());
|
if (subList.size() > 0)
|
params.put("subList", subList);
|
}
|
|
params.put("province", user.getProvince());
|
params.put("city", user.getCity());
|
params.put("district", user.getArea());
|
params.put("street", user.getTown());
|
params.put("committee", user.getCommunity());
|
}
|
//基本
|
params.put("directioncode", filter.get("directioncode"));
|
params.put("identify", filter.get("identify"));
|
params.put("starttime", filter.get("starttime"));
|
params.put("endtime", filter.get("endtime"));
|
params.put("enterprisename", filter.get("enterprisename"));
|
params.put("parententerprisename", filter.get("parententerprisename"));
|
params.put("isNeedUploadPhoto", filter.get("isNeedUploadPhoto"));
|
params.put("nation", filter.get("nation"));
|
//省市区
|
params.put("filterProvince", filter.get("province"));
|
params.put("filterCity", filter.get("city"));
|
params.put("filterDistrict", filter.get("district"));
|
params.put("filterStreet", filter.get("street"));
|
params.put("filterCommittee", filter.get("committee"));
|
List<Map> list = saleOrderInfoMapper.selectSaleRecord4(page, params);
|
|
Map<String, Object> totalRow = new HashMap<>();
|
//购买总人数
|
totalRow.put("city", "合计");
|
totalRow.put("enterprisename", "购买总人数");
|
Integer i = saleOrderInfoMapper.selectSaleAllPerson(params);
|
totalRow.put("name", i);
|
//购买总数
|
totalRow.put("identify", "购买总挂数");
|
Integer j = saleOrderInfoMapper.selectAllSaleNum(params);
|
totalRow.put("num", j);
|
//退货数量
|
Integer m = saleOrderInfoMapper.selectAllReturnNum(params);
|
totalRow.put("returnnum", m);
|
ArrayList<Map> res = new ArrayList<>(list);
|
res.add(totalRow);
|
return page.setRecords(res);
|
}
|
|
/**
|
* @Description: 根据销售企业的单位编号和人员的身份证获取购买明细
|
* @date 2021/4/14 12:43
|
*/
|
@Override
|
public IPage getPurchaseDetailInUnit(Page<SaleOrderDetailInfo> page, Map filter, UserInfo user) {
|
|
String enterprisenumber = (String) filter.get("enterprisenumber");
|
String identify = (String) filter.get("identify");
|
if (StringUtils.isBlank(enterprisenumber) || StringUtils.isBlank(identify)) {
|
throw new BusinessException("企业单位编号和身份证不能为空");
|
}
|
Map<String, Object> params = new HashMap<>();
|
params.put("enterprisenumber", enterprisenumber);
|
params.put("identify", identify);
|
params.put("directioncode", filter.get("directioncode"));
|
params.put("starttime", filter.get("starttime"));
|
params.put("endtime", filter.get("endtime"));
|
List<SaleOrderDetailInfo> list = saleOrderInfoMapper.getPurchaseDetailInUnit(page, params);
|
return page.setRecords(list);
|
}
|
|
@Override
|
public List<SaleOrderInfo> selectEarlyWarn(String starttime, String endttime, Integer min, Integer max) {
|
return saleOrderInfoMapper.selectEarlyWarn(starttime, endttime, min, max);
|
}
|
|
@Override
|
public List<SaleOrderInfo> selectAlarm(String starttime, String endttime, Integer max) {
|
return saleOrderInfoMapper.selectAlarm(starttime, endttime, max);
|
}
|
|
@Override
|
public Long selectByCustomer(Long customid) {
|
return saleOrderInfoMapper.selectByCustomer(customid);
|
}
|
|
@Override
|
public BigDecimal getSaleNumByCondition(Map<String, Object> condition) {
|
return saleOrderDetailInfoMapper.getSaleNumByCondition(condition);
|
}
|
|
/**
|
* @Description: 销售汇总导出
|
* @date 2021/4/19 17:33
|
*/
|
@Override
|
public List<Map> selectExportSaleRecord3(Map filter, UserInfo user) {
|
|
Map<String, Object> params = new HashMap<>();
|
UserInfo userInfo = userService.getById(user);
|
//权限
|
{
|
params.put("enterprisenumber", userInfo.getCompanynumber());
|
params.put("province", user.getProvince());
|
params.put("city", user.getCity());
|
params.put("district", user.getArea());
|
params.put("street", user.getTown());
|
params.put("committee", user.getCommunity());
|
}
|
//过滤条件
|
//产品流向码,产品名称
|
params.put("itemcode", filter.get("itemcode"));
|
params.put("itemname", filter.get("itemname"));
|
|
params.put("filterProvince", filter.get("province"));
|
params.put("filterCity", filter.get("city"));
|
params.put("filterDistrict", filter.get("district"));
|
params.put("filterStreet", filter.get("street"));
|
params.put("filterCommittee", filter.get("committee"));
|
params.put("starttime", filter.get("starttime"));
|
params.put("endtime", filter.get("endtime"));
|
params.put("safetysupervision", filter.get("safetysupervision"));
|
params.put("enterprisename", filter.get("enterprisename"));
|
params.put("parententerprisename", filter.get("parententerprisename"));
|
|
return saleOrderInfoMapper.selectSaleRecord3(params);
|
}
|
|
/**
|
* @Description: 实名销售导出
|
* @date 2021/4/19 17:40
|
*/
|
@Override
|
public List<Map> selectExportSaleRecord4(Map filter, UserInfo user) {
|
|
Map<String, Object> params = new HashMap<>();
|
UserInfo userInfo = userService.getById(user.getId());
|
//过滤条件
|
//权限
|
{
|
params.put("enterprisenumber", userInfo.getCompanynumber());
|
if (StringUtils.isNotBlank(userInfo.getCompanynumber())) {
|
List<Enterprise> subs = enterpriseService.selectSubEnterprise(userInfo.getCompanyid());
|
List<String> subList = subs.stream().map(Enterprise::getEnterprisenumber).collect(Collectors.toList());
|
if (subList.size() > 0)
|
params.put("subList", subList);
|
}
|
params.put("province", user.getProvince());
|
params.put("city", user.getCity());
|
params.put("district", user.getArea());
|
params.put("street", user.getTown());
|
params.put("committee", user.getCommunity());
|
}
|
//基本
|
params.put("directioncode", filter.get("directioncode"));
|
params.put("identify", filter.get("identify"));
|
params.put("starttime", filter.get("starttime"));
|
params.put("endtime", filter.get("endtime"));
|
params.put("enterprisename", filter.get("enterprisename"));
|
params.put("parententerprisename", filter.get("parententerprisename"));
|
params.put("nation", filter.get("nation"));
|
//省市区
|
params.put("filterProvince", filter.get("province"));
|
params.put("filterCity", filter.get("city"));
|
params.put("filterDistrict", filter.get("district"));
|
params.put("filterStreet", filter.get("street"));
|
params.put("filterCommittee", filter.get("committee"));
|
|
List<Map> list = saleOrderInfoMapper.selectSaleRecord4(params);
|
Map<String, Object> totalRow = new HashMap<>();
|
//购买总人数
|
totalRow.put("city", "合计");
|
totalRow.put("enterprisename", "购买总人数");
|
Integer i = saleOrderInfoMapper.selectSaleAllPerson(params);
|
totalRow.put("name", i);
|
//购买总数
|
totalRow.put("identify", "购买总挂数");
|
Integer j = saleOrderInfoMapper.selectAllSaleNum(params);
|
totalRow.put("num", j);
|
//退货数量
|
Integer m = saleOrderInfoMapper.selectAllReturnNum(params);
|
totalRow.put("returnnum", m);
|
ArrayList<Map> res = new ArrayList<>(list);
|
res.add(totalRow);
|
return res;
|
|
|
}
|
|
@Override
|
public PageInfoExtension<List> selectDailySaleReport(PageInfo pageInfo) {
|
Page<DailySaleReport> page = new Page<>(pageInfo.getPageIndex(), pageInfo.getPageSize());
|
|
List<OrderItem> orderItems = new ArrayList<>();
|
OrderItem orderItem = new OrderItem();
|
if (StringUtils.isNotBlank(pageInfo.getSort()) && StringUtils.isNotBlank(pageInfo.getOrder())) {
|
orderItem.setAsc(pageInfo.getOrder().equalsIgnoreCase("ascending"));
|
orderItem.setColumn(pageInfo.getSort());
|
}else {
|
orderItem.setAsc(false);
|
orderItem.setColumn("createdat");
|
}
|
orderItems.add(orderItem);
|
page.setOrders(orderItems);
|
if (StringUtils.isBlank(pageInfo.getSort())){
|
pageInfo.setSort("createdat");
|
}
|
if (StringUtils.isBlank(pageInfo.getOrder())){
|
pageInfo.setOrder("desc");
|
}
|
List<DailySaleReport> reports = saleOrderInfoMapper.selectDailySaleReport(pageInfo.getCondition(),page);
|
pageInfo.setResult(reports);
|
pageInfo.setTotalCount(page.getTotal());
|
List<Map> list = saleOrderInfoMapper.selectAllDailySaleReport(pageInfo.getCondition());
|
PageInfoExtension<List> extension = new PageInfoExtension<>(pageInfo);
|
extension.setExtension(list);
|
return extension;
|
}
|
|
@Override
|
public void selectOrderDataGrid(PageInfo pageInfo) {
|
Page<SaleOrderInfo> page = new Page<>(pageInfo.getPageIndex(), pageInfo.getPageSize());
|
|
List<OrderItem> orderItems = new ArrayList<>();
|
OrderItem orderItem = new OrderItem();
|
if (StringUtils.isNotBlank(pageInfo.getSort()) && StringUtils.isNotBlank(pageInfo.getOrder())) {
|
orderItem.setAsc(pageInfo.getOrder().equalsIgnoreCase("ascending"));
|
orderItem.setColumn(pageInfo.getSort());
|
}else {
|
orderItem.setAsc(false);
|
orderItem.setColumn("createdat");
|
}
|
orderItems.add(orderItem);
|
page.setOrders(orderItems);
|
if (StringUtils.isBlank(pageInfo.getSort())){
|
pageInfo.setSort("createdat");
|
}
|
if (StringUtils.isBlank(pageInfo.getOrder())){
|
pageInfo.setOrder("desc");
|
}
|
List<SaleOrderInfo> orderInfos = saleOrderInfoMapper.selectDataGrid(pageInfo.getCondition(),page);
|
if (orderInfos.size() > 0) {
|
for (SaleOrderInfo info : orderInfos) {
|
info.setDetails(saleOrderInfoMapper.selectDetails(info.getCode()));
|
}
|
}
|
pageInfo.setResult(orderInfos);
|
pageInfo.setTotalCount(page.getTotal());
|
}
|
|
@Override
|
public int getDailySaleCount(UserInfo userInfo) {
|
LambdaQueryWrapper<SaleOrderInfo>wrapper = new LambdaQueryWrapper<>();
|
Calendar calendar = Calendar.getInstance();
|
calendar.setTime(new Date());
|
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
calendar.set(Calendar.MINUTE, 0);
|
calendar.set(Calendar.SECOND, 0);
|
Date start = calendar.getTime();
|
calendar.set(Calendar.HOUR_OF_DAY, 23);
|
calendar.set(Calendar.MINUTE, 59);
|
calendar.set(Calendar.SECOND, 59);
|
Date end = calendar.getTime();
|
wrapper.ge(SaleOrderInfo::getCreatedat,start);
|
wrapper.le(SaleOrderInfo::getCreatedat,end);
|
wrapper.eq(SaleOrderInfo::getCompanynumber,userInfo.getCompanynumber());
|
return saleOrderInfoMapper.selectCount(wrapper);
|
}
|
|
@Override
|
public void selectEnterpriseEnterSellStoreDataGrid(PageInfo pageInfo, Map<String, Object> filter, UserInfo userInfo) {
|
Page<Enterprise> page = new Page<>(pageInfo.getPageIndex(), pageInfo.getPageSize());
|
|
Map<String, Object> params = new HashMap<>();
|
//过滤条件
|
params.put("filterProvince", filter.get("province"));
|
params.put("filterCity", filter.get("city"));
|
params.put("filterDistrict", filter.get("district"));
|
params.put("filterStreet", filter.get("street"));
|
params.put("filterCommittee", filter.get("committee"));
|
params.put("starttime", filter.get("starttime"));
|
params.put("endtime", filter.get("endtime"));
|
params.put("safetysupervision", filter.get("safetysupervision"));
|
params.put("enterprisename", filter.get("enterprisename"));
|
params.put("parententerprisename", filter.get("parententerprisename"));
|
|
if (userInfo != null && userInfo.getCompanynumber() != null){
|
params.put("enterprisenumber", userInfo.getCompanynumber());
|
List<Enterprise> subs = enterpriseService.selectSubEnterprise(userInfo.getCompanyid());
|
List<String> subList = subs.stream().map(Enterprise::getEnterprisenumber).collect(Collectors.toList());
|
if (subList.size() > 0)
|
params.put("subList", subList);
|
}
|
|
List<OrderItem> orderItems = new ArrayList<>();
|
OrderItem orderItem = new OrderItem();
|
if (StringUtils.isNotBlank(pageInfo.getSort()) && StringUtils.isNotBlank(pageInfo.getOrder())) {
|
orderItem.setAsc(pageInfo.getOrder().equalsIgnoreCase("ascending"));
|
orderItem.setColumn(pageInfo.getSort());
|
}else {
|
orderItem.setAsc(false);
|
orderItem.setColumn("id");
|
}
|
orderItems.add(orderItem);
|
page.setOrders(orderItems);
|
if (StringUtils.isBlank(pageInfo.getSort())){
|
pageInfo.setSort("id");
|
}
|
if (StringUtils.isBlank(pageInfo.getOrder())){
|
pageInfo.setOrder("asc");
|
}
|
List<Enterprise> enterprises = enterpriseService.selectSaleEnterprise(params,page);
|
List<EnterpriseDataVo> enterpriseDataVos = new ArrayList<>();
|
for (Enterprise enterprise : enterprises){
|
BigDecimal saleNumber = saleOrderInfoMapper.selectEnterpriseSaleNumber(enterprise.getEnterprisenumber(),filter.get("starttime"),filter.get("endtime"));
|
BigDecimal entryNumber = entryService.selectEnterpriseEntryNumber(enterprise.getEnterprisenumber(),filter.get("starttime"),filter.get("endtime"));
|
BigDecimal deliveryNumber = deliveryDetailService.selectEnterpriseDeliveryNumber(enterprise.getEnterprisenumber(), filter.get("starttime"), filter.get("endtime"));
|
EnterpriseDataVo enterpriseDataVo = new EnterpriseDataVo(enterprise.getEnterprisename(),saleNumber,entryNumber);
|
enterpriseDataVo.setDeliveryNumber(deliveryNumber);
|
enterpriseDataVos.add(enterpriseDataVo);
|
}
|
pageInfo.setResult(enterpriseDataVos);
|
pageInfo.setTotalCount(page.getTotal());
|
}
|
|
@Override
|
public List<EnterpriseDataVo> selectEnterpriseEnterSellStoreData(Map<String, Object> filter,UserInfo userInfo) {
|
Map<String, Object> params = new HashMap<>();
|
//过滤条件
|
params.put("filterProvince", filter.get("province"));
|
params.put("filterCity", filter.get("city"));
|
params.put("filterDistrict", filter.get("district"));
|
params.put("filterStreet", filter.get("street"));
|
params.put("filterCommittee", filter.get("committee"));
|
params.put("starttime", filter.get("starttime"));
|
params.put("endtime", filter.get("endtime"));
|
params.put("safetysupervision", filter.get("safetysupervision"));
|
params.put("enterprisename", filter.get("enterprisename"));
|
params.put("parententerprisename", filter.get("parententerprisename"));
|
|
if (userInfo != null && userInfo.getCompanynumber() != null){
|
params.put("enterprisename", userInfo.getCompany());
|
}
|
|
List<Enterprise> enterprises = enterpriseService.selectSaleEnterprise(params);
|
List<EnterpriseDataVo> enterpriseDataVos = new ArrayList<>();
|
for (Enterprise enterprise : enterprises){
|
BigDecimal saleNumber = saleOrderInfoMapper.selectEnterpriseSaleNumber(enterprise.getEnterprisenumber(),filter.get("starttime"),filter.get("endtime"));
|
BigDecimal entryNumber = entryService.selectEnterpriseEntryNumber(enterprise.getEnterprisenumber(),filter.get("starttime"),filter.get("endtime"));
|
BigDecimal deliveryNumber = deliveryDetailService.selectEnterpriseDeliveryNumber(enterprise.getEnterprisenumber(), filter.get("starttime"), filter.get("endtime"));
|
EnterpriseDataVo enterpriseDataVo = new EnterpriseDataVo(enterprise.getEnterprisename(),saleNumber,entryNumber);
|
enterpriseDataVo.setDeliveryNumber(deliveryNumber);
|
enterpriseDataVos.add(enterpriseDataVo);
|
}
|
return enterpriseDataVos;
|
}
|
|
@Override
|
public SaleOrderDetailInfo selectOrderByDirectionReturnflag(String directionCode, byte returnflag, String datetime) {
|
return saleOrderDetailInfoMapper.selectOrderByDirectionReturnflag(directionCode,returnflag,datetime);
|
}
|
|
@Override
|
public void selectCityEnterSellStoreDataGrid(PageInfo pageInfo, Map<String, Object> filter) {
|
Page<Enterprise> page = new Page<>(pageInfo.getPageIndex(), pageInfo.getPageSize());
|
|
Map<String, Object> params = new HashMap<>();
|
//过滤条件
|
params.put("filterProvince", filter.get("province"));
|
params.put("filterCity", filter.get("city"));
|
params.put("filterDistrict", filter.get("district"));
|
params.put("filterStreet", filter.get("street"));
|
params.put("filterCommittee", filter.get("committee"));
|
params.put("starttime", filter.get("starttime"));
|
params.put("endtime", filter.get("endtime"));
|
params.put("safetysupervision", filter.get("safetysupervision"));
|
params.put("enterprisename", filter.get("enterprisename"));
|
params.put("parententerprisename", filter.get("parententerprisename"));
|
|
List<OrderItem> orderItems = new ArrayList<>();
|
OrderItem orderItem = new OrderItem();
|
if (StringUtils.isNotBlank(pageInfo.getSort()) && StringUtils.isNotBlank(pageInfo.getOrder())) {
|
orderItem.setAsc(pageInfo.getOrder().equalsIgnoreCase("ascending"));
|
orderItem.setColumn(pageInfo.getSort());
|
}else {
|
orderItem.setAsc(false);
|
orderItem.setColumn("id");
|
}
|
orderItems.add(orderItem);
|
page.setOrders(orderItems);
|
if (StringUtils.isBlank(pageInfo.getSort())){
|
pageInfo.setSort("id");
|
}
|
if (StringUtils.isBlank(pageInfo.getOrder())){
|
pageInfo.setOrder("asc");
|
}
|
|
List<DistrictInfo> districtInfos = districtService.selectInfoByParentCodeAndCity("65",filter.get("city"));
|
List<CityDataVo> cityDataVos = new ArrayList<>();
|
for (DistrictInfo districtInfo : districtInfos){
|
BigDecimal saleNumber = saleOrderInfoMapper.selectCitySaleNumber(districtInfo.getName(),filter.get("starttime"),filter.get("endtime"));
|
BigDecimal entryNumber = entryService.selectCityEntryNumber(districtInfo.getName(),filter.get("starttime"),filter.get("endtime"));
|
//销售金额
|
BigDecimal sales = saleOrderInfoMapper.selectCitySales(districtInfo.getName(),filter.get("starttime"),filter.get("endtime"));
|
BigDecimal saleNumber2 = saleOrderInfoMapper.selectCitySaleNumber(districtInfo.getName(),filter.get("starttime2"),filter.get("endtime2"));
|
BigDecimal entryNumber2 = entryService.selectCityEntryNumber(districtInfo.getName(),filter.get("starttime2"),filter.get("endtime2"));
|
////销售金额
|
BigDecimal sales2 = saleOrderInfoMapper.selectCitySales(districtInfo.getName(),filter.get("starttime2"),filter.get("endtime2"));
|
String dataRange = filter.get("starttime")+" - "+filter.get("endtime");
|
String dataRange2 = filter.get("starttime2")+" - "+filter.get("endtime2");
|
CityDataVo cityDataVo = new CityDataVo(districtInfo.getName(),dataRange,saleNumber,entryNumber,dataRange2,saleNumber2,entryNumber2);
|
cityDataVo.setSales(sales);
|
cityDataVo.setSales2(sales2);
|
cityDataVos.add(cityDataVo);
|
}
|
pageInfo.setResult(cityDataVos);
|
pageInfo.setTotalCount(page.getTotal());
|
}
|
|
/**
|
* @Description: 按流向码查询
|
* @date 2021/4/12 16:35
|
*/
|
@Override
|
public IPage selectSaleRecord1(Page<Map> page,Map filter, UserInfo user) {
|
|
Map<String, Object> params = new HashMap<>();
|
UserInfo userInfo = userService.getById(user.getId());
|
//过滤条件
|
//权限
|
{
|
params.put("enterprisenumber", userInfo.getCompanynumber());
|
params.put("province", user.getProvince());
|
params.put("city", user.getCity());
|
params.put("district", user.getArea());
|
params.put("street", user.getTown());
|
params.put("committee", user.getCommunity());
|
}
|
//基本
|
params.put("filterProvince", filter.get("province"));
|
params.put("filterCity", filter.get("city"));
|
params.put("filterDistrict", filter.get("district"));
|
params.put("filterStreet", filter.get("street"));
|
params.put("filterCommittee", filter.get("committee"));
|
params.put("starttime", filter.get("starttime"));
|
params.put("endtime", filter.get("endtime"));
|
params.put("identify", filter.get("identify"));
|
params.put("directioncode", filter.get("directioncode"));
|
params.put("safetySupervision", filter.get("safetySupervision"));
|
params.put("enterprisename", filter.get("enterprisename"));
|
params.put("parententerprisename", filter.get("parententerprisename"));
|
List<Map> list = saleOrderInfoMapper.selectSaleRecord1(page, params);
|
return page.setRecords(list);
|
}
|
|
|
|
public SaleOrderInfo generateSaleOrderInfo(String type, UserInfo userInfo, Integer num, Date salesTime,
|
Long customerId, String pay, String total, String change, String userId){
|
SaleOrderInfo orderInfo = new SaleOrderInfo();
|
orderInfo.setCode(generateOrderCode(MODULE_SALE,type,new Date(),userInfo.getId()));
|
orderInfo.setType(Byte.parseByte(type));
|
orderInfo.setCreatedat(salesTime);
|
orderInfo.setCreatedby(userInfo.getUsername());
|
orderInfo.setBoxnum(new BigDecimal(num));
|
orderInfo.setPay(new BigDecimal(pay));
|
orderInfo.setChange(new BigDecimal(change));
|
orderInfo.setSalesperson(userInfo.getUsername());
|
orderInfo.setTotalprice(new BigDecimal(total));
|
orderInfo.setShop(userInfo.getCompany());
|
orderInfo.setCompanynumber(userInfo.getCompanynumber());
|
orderInfo.setCustomer(customerId);
|
|
return orderInfo;
|
}
|
|
@Override
|
public String generateOrderCode(String module, String type, Date date, Long userId){
|
//DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS");
|
//创建Instant对象
|
Instant instant = Instant.now();
|
//获取毫秒数
|
long currentMilli = instant.toEpochMilli();
|
String orderCode = String.valueOf(currentMilli);
|
String extend = String.format("%06d",userId);
|
switch (module) {
|
case MODULE_ENTRY:
|
if (type.equals(RK_ENTRY)) {
|
orderCode = "RK-" + orderCode;
|
} else if (type.equals(TH_ENTRY)) {
|
orderCode = "TH-" + orderCode;
|
}
|
break;
|
case MODULE_DELIVERY:
|
if (type.equals(NORMAL_DELIVERY)) {
|
orderCode = "ND-" + orderCode;
|
} else {
|
orderCode = "OD-" + orderCode;
|
}
|
break;
|
case MODULE_SALE:
|
if (type.equals(RETAIL_ORDER)) {
|
orderCode = "RO-" + orderCode;
|
} else if (type.equals(GROUP_ORDER)) {
|
orderCode = "GO-" + orderCode;
|
}
|
break;
|
default:
|
}
|
|
return orderCode+extend+hostId+Thread.currentThread().getId();
|
}
|
|
@Override
|
public SaleOrderInfo isExist(Long id, String companynumber, Date salesTime) {
|
LambdaQueryWrapper<SaleOrderInfo>wrapper = new LambdaQueryWrapper<>();
|
wrapper.eq(SaleOrderInfo::getCreatedat,salesTime);
|
wrapper.eq(SaleOrderInfo::getCustomer,id);
|
wrapper.eq(SaleOrderInfo::getCompanynumber,companynumber);
|
return baseMapper.selectOne(wrapper);
|
}
|
|
@Override
|
public List<SaleOrderInfo> getWaitUploadOrderByEnterprise(Enterprise enterprise) {
|
LambdaQueryWrapper<SaleOrderInfo> wrapper = new LambdaQueryWrapper<>();
|
wrapper.eq(SaleOrderInfo::getIsupload,0);
|
wrapper.ge(SaleOrderInfo::getCreatedat,"2022-01-21");
|
wrapper.eq(SaleOrderInfo::getCompanynumber,enterprise.getEnterprisenumber());
|
return baseMapper.selectList(wrapper);
|
}
|
|
}
|