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 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 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 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 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 page = new Page<>(pageInfo.getPageIndex(), pageInfo.getPageSize()); List 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 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 page, Map filter, UserInfo user) { Map 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 list = saleOrderInfoMapper.selectSaleRecord2(page, params); return page.setRecords(list); } /** * @Description: 按产品查询,没有权限,显示所有产品 * @date 2021/4/13 8:54 */ @Override public PageInfoExtension selectSaleRecord3(Page page, Map filter, UserInfo user) { Map 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 list = saleOrderInfoMapper.selectSaleRecord3(page, params); //统计该查询条件下所有产品销售的总箱数 Map sales = saleOrderInfoMapper.selectProductSales(params); PageInfoExtension 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 page, Map filter, UserInfo user) { Map params = new HashMap<>(); UserInfo userInfo = userService.getById(user.getId()); //过滤条件 //权限 { params.put("enterprisenumber", userInfo.getCompanynumber()); if (StringUtils.isNotBlank(userInfo.getCompanynumber())) { List subs = enterpriseService.selectSubEnterprise(userInfo.getCompanyid()); List 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 list = saleOrderInfoMapper.selectSaleRecord4(page, params); Map 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 res = new ArrayList<>(list); res.add(totalRow); return page.setRecords(res); } /** * @Description: 根据销售企业的单位编号和人员的身份证获取购买明细 * @date 2021/4/14 12:43 */ @Override public IPage getPurchaseDetailInUnit(Page 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 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 list = saleOrderInfoMapper.getPurchaseDetailInUnit(page, params); return page.setRecords(list); } @Override public List selectEarlyWarn(String starttime, String endttime, Integer min, Integer max) { return saleOrderInfoMapper.selectEarlyWarn(starttime, endttime, min, max); } @Override public List 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 condition) { return saleOrderDetailInfoMapper.getSaleNumByCondition(condition); } /** * @Description: 销售汇总导出 * @date 2021/4/19 17:33 */ @Override public List selectExportSaleRecord3(Map filter, UserInfo user) { Map 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 selectExportSaleRecord4(Map filter, UserInfo user) { Map params = new HashMap<>(); UserInfo userInfo = userService.getById(user.getId()); //过滤条件 //权限 { params.put("enterprisenumber", userInfo.getCompanynumber()); if (StringUtils.isNotBlank(userInfo.getCompanynumber())) { List subs = enterpriseService.selectSubEnterprise(userInfo.getCompanyid()); List 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 list = saleOrderInfoMapper.selectSaleRecord4(params); Map 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 res = new ArrayList<>(list); res.add(totalRow); return res; } @Override public PageInfoExtension selectDailySaleReport(PageInfo pageInfo) { Page page = new Page<>(pageInfo.getPageIndex(), pageInfo.getPageSize()); List 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 reports = saleOrderInfoMapper.selectDailySaleReport(pageInfo.getCondition(),page); pageInfo.setResult(reports); pageInfo.setTotalCount(page.getTotal()); List list = saleOrderInfoMapper.selectAllDailySaleReport(pageInfo.getCondition()); PageInfoExtension extension = new PageInfoExtension<>(pageInfo); extension.setExtension(list); return extension; } @Override public void selectOrderDataGrid(PageInfo pageInfo) { Page page = new Page<>(pageInfo.getPageIndex(), pageInfo.getPageSize()); List 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 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) { LambdaQueryWrapperwrapper = 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 filter, UserInfo userInfo) { Page page = new Page<>(pageInfo.getPageIndex(), pageInfo.getPageSize()); Map 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 subs = enterpriseService.selectSubEnterprise(userInfo.getCompanyid()); List subList = subs.stream().map(Enterprise::getEnterprisenumber).collect(Collectors.toList()); if (subList.size() > 0) params.put("subList", subList); } List 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 enterprises = enterpriseService.selectSaleEnterprise(params,page); List 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 selectEnterpriseEnterSellStoreData(Map filter,UserInfo userInfo) { Map 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 enterprises = enterpriseService.selectSaleEnterprise(params); List 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 filter) { Page page = new Page<>(pageInfo.getPageIndex(), pageInfo.getPageSize()); Map 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 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 districtInfos = districtService.selectInfoByParentCodeAndCity("65",filter.get("city")); List 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 page,Map filter, UserInfo user) { Map 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 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) { LambdaQueryWrapperwrapper = new LambdaQueryWrapper<>(); wrapper.eq(SaleOrderInfo::getCreatedat,salesTime); wrapper.eq(SaleOrderInfo::getCustomer,id); wrapper.eq(SaleOrderInfo::getCompanynumber,companynumber); return baseMapper.selectOne(wrapper); } @Override public List getWaitUploadOrderByEnterprise(Enterprise enterprise) { LambdaQueryWrapper 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); } }