对比新文件 |
| | |
| | | package com.gk.firework.Service.ServiceImpl; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.metadata.OrderItem; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.gk.firework.Domain.*; |
| | | import com.gk.firework.Domain.BO.DirectionProductBO; |
| | | import com.gk.firework.Domain.BO.ProductLocusInfoBO; |
| | | import com.gk.firework.Domain.BO.SaleOrderDetailInfoBO; |
| | | import com.gk.firework.Domain.DO.ProductDO; |
| | | import com.gk.firework.Domain.Exception.BusinessException; |
| | | import com.gk.firework.Domain.Extension.StockTotal; |
| | | 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.ProductInfoMapper; |
| | | import com.gk.firework.Mapper.StockInfoMapper; |
| | | import com.gk.firework.Service.*; |
| | | import org.joda.time.DateTime; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.transaction.interceptor.TransactionAspectSupport; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.*; |
| | | |
| | | import static com.gk.firework.Domain.Enum.ErrorCode.*; |
| | | |
| | | /** |
| | | * @author : jingjy |
| | | * @date : 2021/3/24 14:04 |
| | | */ |
| | | @Service("StockService") |
| | | public class StockServiceImpl extends ServiceImpl<StockInfoMapper, StockInfo> implements StockService { |
| | | @Autowired |
| | | private StockInfoMapper stockInfoMapper; |
| | | @Autowired |
| | | private ProductInfoMapper productInfoMapper; |
| | | @Autowired |
| | | private ProductLocusService productLocusService; |
| | | @Autowired |
| | | private ProductService productService; |
| | | @Autowired |
| | | private UserService userService; |
| | | @Autowired |
| | | private CustomerService customerService; |
| | | @Autowired |
| | | private SoldNoStockService soldNoStockService; |
| | | @Autowired |
| | | private EntryService entryService; |
| | | @Autowired |
| | | private SaleOrderService saleOrderService; |
| | | @Autowired |
| | | private SaleOrderDetailService saleOrderDetailService; |
| | | @Autowired |
| | | private DeliveryOrderService deliveryOrderService; |
| | | @Autowired |
| | | private WarnContentService warnContentService; |
| | | @Autowired |
| | | private EnterpriseService enterpriseService; |
| | | @Autowired |
| | | private StaticStockService staticStockService; |
| | | |
| | | /** 入库 **/ |
| | | @Override |
| | | public boolean putInStorage(UserInfo userInfo, List<ProductVo> productVos, Date datetime, String type) { |
| | | boolean flag = false; |
| | | for (ProductVo productVo : productVos){ |
| | | StockInfo stockInfo = selectStockByDirection(productVo.getDirectionCode()); |
| | | ProductInfo productInfo = productInfoMapper.selectProductByDirectionCode(productVo.getItemCode()); |
| | | ProductLocusInfo productLocusInfo = new ProductLocusInfo(); |
| | | //如果为空则创建 |
| | | if (stockInfo == null){ |
| | | stockInfo = new StockInfo(); |
| | | stockInfo.setDirectioncode(productVo.getDirectionCode()); |
| | | stockInfo.setCreateddate(new Date()); |
| | | stockInfo.setCreatedby(userInfo.getUsername()); |
| | | stockInfo.setDirectionboxcode(String.format("%03d",productVo.getBoxNumber())); |
| | | stockInfo.setModifieddate(datetime); |
| | | stockInfo.setNum(1); |
| | | stockInfo.setOperator(userInfo.getUsername()); |
| | | stockInfo.setIndate(datetime); |
| | | stockInfo.setProductid(productInfo.getId()); |
| | | stockInfo.setOwner(userInfo.getCompanyid().toString()); |
| | | stockInfo.setFlag((byte)0); |
| | | stockInfo.setType(Byte.parseByte(type)); |
| | | int i = insertStockInfo(stockInfo); |
| | | if (i == 1){ flag = true; } |
| | | productLocusInfo = new ProductLocusInfo(productVo.getDirectionCode(),new Date(), |
| | | datetime,userInfo.getCompany(),null,ProductLocusInfo.ENTRY_STATUS, |
| | | productVo.getBoxNumber().toString()); |
| | | productLocusService.insertProductLocus(productLocusInfo); |
| | | }else { |
| | | //一般入库 |
| | | if (EntryUtils.RK_ENTRY.equals(type)){ |
| | | // 判断入库是否大于修改时间,小于修改时间不做修改 |
| | | if (stockInfo.getModifieddate().compareTo(datetime) > 0 ){ |
| | | continue; |
| | | } |
| | | |
| | | //如果不为空,判断flag,如果flag=1,则不进行修改,只记录流向,否则修改owner |
| | | if (stockInfo.getFlag() == 0){ |
| | | stockInfo.setModifieddate(datetime); |
| | | stockInfo.setModifiedby(userInfo.getUsername()); |
| | | stockInfo.setIndate(datetime); |
| | | stockInfo.setOwner(userInfo.getCompanyid().toString()); |
| | | stockInfo.setFlag((byte)0); |
| | | stockInfo.setStatus(""); |
| | | } |
| | | productLocusInfo = new ProductLocusInfo(productVo.getDirectionCode(),new Date(), |
| | | datetime,userInfo.getCompany(),null,ProductLocusInfo.ENTRY_STATUS, |
| | | productVo.getBoxNumber().toString()); |
| | | |
| | | }else if (EntryUtils.TH_ENTRY.equals(type)){ |
| | | //退货入库 |
| | | //未使用 |
| | | stockInfo.setOwner(userInfo.getCompanyid().toString()); |
| | | stockInfo.setModifieddate(datetime); |
| | | stockInfo.setModifiedby(userInfo.getUsername()); |
| | | stockInfo.setStatus(""); |
| | | productLocusInfo = new ProductLocusInfo(productVo.getDirectionCode(),new Date(), |
| | | datetime,userInfo.getCompany(),null,ProductLocusInfo.RETURN_ENTRY_STATUS, |
| | | productVo.getBoxNumber().toString()); |
| | | |
| | | } |
| | | productLocusService.insertProductLocus(productLocusInfo); |
| | | int i = updateStockInfo(stockInfo); |
| | | if (i == 1){ flag = true; } |
| | | } |
| | | } |
| | | return flag; |
| | | } |
| | | |
| | | @Override |
| | | public void setProductEntryStatus(List<ProductVo> productVos, UserInfo userInfo) { |
| | | if (productVos.size() != 0 && userInfo != null){ |
| | | |
| | | for (ProductVo productVo : productVos) { |
| | | if (isStockInfoExist(productVo.getDirectionCode(),userInfo.getCompanyid())){ |
| | | productVo.setEntryFlag("历史入库"); |
| | | }else { |
| | | productVo.setEntryFlag("可以入库"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void deliveryByDetail(Date datetime, List<DeliveryDetailInfo> deliveryDetailInfos, UserInfo userInfo) { |
| | | List<ProductVo>productVos = new ArrayList<>(); |
| | | List<ProductLocusInfo>productLocusInfos = new ArrayList<>(); |
| | | |
| | | for (DeliveryDetailInfo deliveryDetailInfo : deliveryDetailInfos){ |
| | | String dire = deliveryDetailInfo.getDirectioncode(); |
| | | DirectionDetail detail = FireworkDeal.dealDirectionCode(dire); |
| | | ProductVo productVo = productInfoMapper.selectProductVoByDirectionCode(detail.getItemCode()); |
| | | if (FireworkDeal.is22Characters(dire)){ |
| | | FireworkDeal.getProductVos(dire,detail,detail,productVos,productVo); |
| | | ProductLocusInfo productLocusInfo = new ProductLocusInfo(dire,new Date(),datetime,userInfo.getCompany() |
| | | ,null, ProductLocusInfo.DELIVERY_STATUS,detail.getBoxNo()); |
| | | productLocusInfos.add(productLocusInfo); |
| | | }else if (FireworkDeal.is19Characters(dire)){ |
| | | productVos.add(productVo); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | for (ProductVo productVo : productVos){ |
| | | StockInfo stockInfo = selectStockByDirection(productVo.getDirectionCode()); |
| | | DirectionDetail detail = FireworkDeal.dealDirectionCode(productVo.getDirectionCode()); |
| | | ProductInfo productInfo = productService.selectByDirection(productVo.getDirectionCode()); |
| | | ProductLocusInfo productLocusInfo = new ProductLocusInfo(productVo.getDirectionCode(),new Date(),datetime,userInfo.getCompany() |
| | | ,null, ProductLocusInfo.DELIVERY_STATUS,detail.getBoxNo()); |
| | | productLocusInfos.add(productLocusInfo); |
| | | if (stockInfo == null) { |
| | | stockInfo = new StockInfo(); |
| | | stockInfo.setDirectioncode(productVo.getDirectionCode()); |
| | | stockInfo.setCreateddate(new Date()); |
| | | stockInfo.setDirectionboxcode(String.format("%03d", productVo.getBoxNumber())); |
| | | stockInfo.setCreatedby(userInfo.getUsername()); |
| | | stockInfo.setNum(1); |
| | | stockInfo.setOperator(userInfo.getUsername()); |
| | | stockInfo.setIndate(new Date()); |
| | | stockInfo.setProductid(productInfo.getId()); |
| | | stockInfo.setOwner(""); |
| | | stockInfo.setModifiedby(userInfo.getUsername()); |
| | | stockInfo.setModifieddate(datetime); |
| | | stockInfo.setOutdate(datetime); |
| | | stockInfo.setFlag((byte) 0); |
| | | stockInfo.setType((byte) 1); |
| | | insertStockInfo(stockInfo); |
| | | }else { |
| | | //库存修改原则,时间最近的修改才生效 |
| | | // 判断出库是否大于修改时间,小于修改时间不做库存修改 |
| | | if (stockInfo.getModifieddate().compareTo(datetime) > 0){ |
| | | continue; |
| | | } |
| | | //出库后Owner设空 |
| | | stockInfo.setOwner(""); |
| | | stockInfo.setModifiedby(userInfo.getUsername()); |
| | | stockInfo.setModifieddate(datetime); |
| | | stockInfo.setOutdate(datetime); |
| | | updateStockInfo(stockInfo); |
| | | } |
| | | |
| | | } |
| | | productLocusService.insertBatch(productLocusInfos); |
| | | } |
| | | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @Override |
| | | public Msg changeStockBySale(CustomerInfo customerInfo, List<SaleOrderDetailInfoBO> detailInfoList, UserInfo userInfo, Date salesTime) { |
| | | Msg msg = new Msg(); |
| | | if (customerInfo == null || userInfo == null |
| | | || detailInfoList == null || detailInfoList.size() ==0){ |
| | | msg.setCode(ERROR_10002.getCode()); |
| | | msg.setMessage(ERROR_10002.getMsg()+":销售出库失败"); |
| | | return msg; |
| | | } |
| | | Date now = new Date(); |
| | | List<ProductLocusInfo> productLocuses = new ArrayList<>(); |
| | | List<SoldNoStockInfo> soldNoStockInfos = new ArrayList<>(); |
| | | List<WarnContentInfo> warnContentInfos = new ArrayList<>(); |
| | | for (SaleOrderDetailInfoBO detailInfo : detailInfoList){ |
| | | DirectionDetail directionDetail = FireworkDeal.dealDirectionCode(detailInfo.getDirectioncode()); |
| | | if (directionDetail.getLength().equals(FireworkDeal.DIRECTION_INSIDE)){ |
| | | ProductDO productInfo = detailInfo.getProductDO(); |
| | | //流向码为19位时 |
| | | StockInfo stockInfo = selectStockByDirectionAndSlice(directionDetail.getOriginalCode(),productInfo.getSlice()); |
| | | if (stockInfo == null){ |
| | | //库存为空则插入 |
| | | stockInfo = new StockInfo(); |
| | | stockInfo.setDirectioncode(directionDetail.getOriginalCode()); |
| | | stockInfo.setOwner(userInfo.getCompanyid().toString()); |
| | | stockInfo.setCreateddate(now); |
| | | stockInfo.setCreatedby(userInfo.getUsername()); |
| | | stockInfo.setDirectionboxcode(directionDetail.getBoxNo()); |
| | | stockInfo.setModifieddate(salesTime); |
| | | stockInfo.setNum(1); |
| | | stockInfo.setOperator(userInfo.getUsername()); |
| | | stockInfo.setIndate(new Date()); |
| | | stockInfo.setProductid(productInfo.getId()); |
| | | stockInfo.setOwner(userInfo.getCompanyid().toString()); |
| | | stockInfo.setFlag((byte)0); |
| | | stockInfo.setType((byte)1); |
| | | |
| | | //插入一条已销未入库 |
| | | SoldNoStockInfo soldNoStockInfo = new SoldNoStockInfo(); |
| | | soldNoStockInfo.setDirectioncode(stockInfo.getDirectioncode()); |
| | | soldNoStockInfo.setItemcode(productInfo.getDirectionCode()); |
| | | soldNoStockInfo.setItemname(productInfo.getName()); |
| | | soldNoStockInfo.setSalestime(salesTime); |
| | | soldNoStockInfo.setSalesperson(userInfo.getUsername()); |
| | | soldNoStockInfo.setCompanynumber(userInfo.getCompanynumber()); |
| | | soldNoStockInfo.setCreatedat(new Date()); |
| | | soldNoStockInfo.setCreatedby("系统生成"); |
| | | soldNoStockInfo.setContent(productInfo.getManufacturer()); |
| | | // soldNoStockService.save(soldNoStockInfo); |
| | | soldNoStockInfos.add(soldNoStockInfo); |
| | | } |
| | | if (stockInfo.getStatus() != null && stockInfo.getStatus().equals(StockInfo.STOCK_SOLD) |
| | | && !stockInfo.getOwner().equals(customerInfo.getId().toString())){ |
| | | WarnContentInfo warnContentInfo = new WarnContentInfo(); |
| | | warnContentInfo.setWarntype("多次售出"); |
| | | warnContentInfo.setWarnlevel("预警"); |
| | | warnContentInfo.setEnterpriseid(userInfo.getCompanyid()); |
| | | warnContentInfo.setWarncontent(stockInfo.getDirectioncode()+"多次售出"); |
| | | warnContentInfo.setIsmend((byte) 0); |
| | | warnContentInfo.setIsneed((byte) 0); |
| | | warnContentInfo.setIssend((byte) 0); |
| | | warnContentInfo.setModifiedby("系统生成"); |
| | | warnContentInfo.setModifieddate(new Date()); |
| | | warnContentInfo.setCreateddate(new Date()); |
| | | warnContentInfos.add(warnContentInfo); |
| | | // warnContentService.save(warnContentInfo); |
| | | } |
| | | if (StringUtils.isNotBlank(stockInfo.getOwner()) && Long.parseLong(stockInfo.getOwner()) != userInfo.getCompanyid() |
| | | || StringUtils.isBlank(stockInfo.getOwner())){ |
| | | //已销未入库信息插入 |
| | | SoldNoStockInfo soldNoStockInfo = new SoldNoStockInfo(); |
| | | soldNoStockInfo.setDirectioncode(stockInfo.getDirectioncode()); |
| | | soldNoStockInfo.setItemcode(productInfo.getDirectionCode()); |
| | | soldNoStockInfo.setItemname(productInfo.getName()); |
| | | soldNoStockInfo.setSalestime(salesTime); |
| | | soldNoStockInfo.setSalesperson(userInfo.getUsername()); |
| | | soldNoStockInfo.setCompanynumber(userInfo.getCompanynumber()); |
| | | soldNoStockInfo.setCreatedat(new Date()); |
| | | soldNoStockInfo.setCreatedby("系统生成"); |
| | | soldNoStockInfo.setContent(productInfo.getManufacturer()); |
| | | // soldNoStockService.save(soldNoStockInfo); |
| | | soldNoStockInfos.add(soldNoStockInfo); |
| | | } |
| | | |
| | | stockInfo.setOwner(customerInfo.getId().toString()); |
| | | stockInfo.setModifieddate(salesTime); |
| | | stockInfo.setModifiedby(userInfo.getUsername()); |
| | | stockInfo.setStatus(StockInfo.STOCK_SOLD); |
| | | int flag; |
| | | if (stockInfo.getId() == null){ |
| | | flag = this.insertStockInfoBySlice(stockInfo,productInfo.getSlice()); |
| | | }else { |
| | | flag = this.updateStockInfoBySlice(stockInfo,productInfo.getSlice()); |
| | | } |
| | | //插入流向轨迹 |
| | | // ProductLocusInfo productLocusInfo = new ProductLocusInfo(directionDetail.getOriginalCode(),new Date(),salesTime, |
| | | // userInfo.getCompany(),customerInfo.getId(),ProductLocusInfo.SALES_STATUS,null); |
| | | // productLocusService.insertProductLocus(productLocusInfo); |
| | | ProductLocusInfoBO productLocusInfoBO = new ProductLocusInfoBO(); |
| | | productLocusInfoBO.setSlice(productInfo.getSlice()); |
| | | productLocusInfoBO.setDirectioncode(directionDetail.getOriginalCode()); |
| | | productLocusInfoBO.setCreateddate(now); |
| | | productLocusInfoBO.setModifieddate(salesTime); |
| | | productLocusInfoBO.setContent(userInfo.getCompany()); |
| | | productLocusInfoBO.setCustomerid(customerInfo.getId()); |
| | | productLocusInfoBO.setType(ProductLocusInfo.SALES_STATUS); |
| | | productLocusInfoBO.setBoxcode(null); |
| | | productLocuses.add(productLocusInfoBO); |
| | | // 判断是否更新库存成功 |
| | | if (flag == 0){ |
| | | msg.setCode(ERROR_30001.getCode()); |
| | | msg.setMessage(ERROR_30001.getMsg()+":流向码为:"+directionDetail.getOriginalCode()+" 库存更新失败,销售失败"); |
| | | break; |
| | | }else { |
| | | msg.setCode(SUCCESS.getCode()); |
| | | msg.setMessage("出库成功!"); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | if (productLocuses.size() > 0) { |
| | | productLocusService.saveBatchLocus(productLocuses); |
| | | } |
| | | if (warnContentInfos.size() > 0) { |
| | | warnContentService.saveBatchInfo(warnContentInfos); |
| | | } |
| | | if (soldNoStockInfos.size() > 0) { |
| | | soldNoStockService.saveBatchInfo(soldNoStockInfos); |
| | | } |
| | | |
| | | if (!SUCCESS.getCode().equals(msg.getCode())){ |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | } |
| | | return msg; |
| | | } |
| | | |
| | | private boolean isStockInfoExist(String directionCode, Long id) { |
| | | boolean flag = false; |
| | | StockInfo stockInfo = selectStockByDireAndUser(id,directionCode); |
| | | if (stockInfo != null){ |
| | | flag = true; |
| | | } |
| | | return flag; |
| | | } |
| | | |
| | | private int insertStockInfo(StockInfo stockInfo){ |
| | | int i = 0; |
| | | if (stockInfo == null){ |
| | | return i; |
| | | } |
| | | String slice = productService.getSlice(stockInfo.getDirectioncode()); |
| | | i = stockInfoMapper.insertStockInfo(stockInfo, slice); |
| | | return i; |
| | | } |
| | | |
| | | private int updateStockInfo(StockInfo stockInfo){ |
| | | int i = 0; |
| | | if (stockInfo == null){ |
| | | return i; |
| | | } |
| | | String slice = productService.getSlice(stockInfo.getDirectioncode()); |
| | | i = stockInfoMapper.updateStockInfo(stockInfo,slice); |
| | | return i; |
| | | } |
| | | |
| | | @Override |
| | | public StockInfo selectStockByDirection(String directionCode){ |
| | | String slice = productService.getSlice(directionCode); |
| | | if (StringUtils.isBlank(slice)){ |
| | | return null; |
| | | } |
| | | return stockInfoMapper.selectStockByDirection(directionCode,slice); |
| | | } |
| | | |
| | | @Override |
| | | public int doReturn(StockInfo stockInfo, UserInfo userInfo, CustomerInfo customerInfo, Date date) { |
| | | int flag = 0; |
| | | if (stockInfo.getModifieddate().compareTo(date)>0){ |
| | | WarnContentInfo warnContentInfo = warnContentService.selectByWarnTypeAndContent("多次售出",stockInfo.getDirectioncode()+"多次售出"); |
| | | if (warnContentInfo != null){ |
| | | warnContentService.removeById(warnContentInfo.getId()); |
| | | } |
| | | }else { |
| | | stockInfo.setOwner(userInfo.getCompanyid().toString()); |
| | | stockInfo.setModifieddate(new Date()); |
| | | stockInfo.setModifiedby(userInfo.getUsername()); |
| | | stockInfo.setStatus(""); |
| | | flag = updateStockInfo(stockInfo); |
| | | } |
| | | |
| | | //插入流向轨迹 |
| | | ProductLocusInfo productLocusInfo = new ProductLocusInfo(stockInfo.getDirectioncode(), new Date(), new Date(), |
| | | userInfo.getCompany(), customerInfo == null ? null : customerInfo.getId(), ProductLocusInfo.RETURN_ENTRY_STATUS, null); |
| | | productLocusService.insertProductLocus(productLocusInfo); |
| | | return flag; |
| | | } |
| | | |
| | | @Override |
| | | public StockInfo selectStockByDireAndUser(Long companyId, String directionCode) { |
| | | String slice = productService.getSlice(directionCode); |
| | | if (StringUtils.isBlank(slice)){ |
| | | return new StockInfo(); |
| | | } |
| | | return stockInfoMapper.selectStockByDireAndUser(directionCode,companyId,slice); |
| | | } |
| | | |
| | | @Override |
| | | public void updateStocks(List<StockInfo> stockInfos, UserInfo user) { |
| | | for (StockInfo stockInfo : stockInfos){ |
| | | updateStockInfo(stockInfo); |
| | | |
| | | //插入流向轨迹 |
| | | ProductLocusInfo productLocusInfo = new ProductLocusInfo(stockInfo.getDirectioncode(),new Date(),new Date(), |
| | | user.getCompany(),null,ProductLocusInfo.RETURN_DELIVERY_STATUS,null); |
| | | productLocusService.insertProductLocus(productLocusInfo); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void selectDataGrid(PageInfo pageInfo) { |
| | | Page<StockVo> 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("createddate"); |
| | | } |
| | | orderItems.add(orderItem); |
| | | page.setOrders(orderItems); |
| | | if (StringUtils.isBlank(pageInfo.getSort())){ |
| | | pageInfo.setSort("createddate"); |
| | | } |
| | | if (StringUtils.isBlank(pageInfo.getOrder())){ |
| | | pageInfo.setOrder("desc"); |
| | | } |
| | | List<Integer>list = new ArrayList<>(); |
| | | for (int i = 1; i<=20; i++){ |
| | | list.add(i); |
| | | } |
| | | List<StockVo> stockVos = stockInfoMapper.selectStockDataGrid(pageInfo.getCondition(),page,list); |
| | | /*for (StockVo stockVo : stockVos){ |
| | | pageInfo.getCondition().put("companyNumber",stockVo.getEnterpriseNumber()); |
| | | pageInfo.getCondition().put("itemCode",stockVo.getDirectioncode()); |
| | | BigDecimal entryNum = entryService.getEntryNumByCondition(pageInfo.getCondition()); |
| | | BigDecimal returnNum = entryService.getReturnNumByCondition(pageInfo.getCondition()); |
| | | BigDecimal saleNum = saleOrderService.getSaleNumByCondition(pageInfo.getCondition()); |
| | | BigDecimal deliveryNum = deliveryOrderService.getDeliveryNum(pageInfo.getCondition()); |
| | | BigDecimal returnDeliveryNum = deliveryOrderService.getReturnDeliveryNum(pageInfo.getCondition()); |
| | | BigDecimal zero = new BigDecimal("0"); |
| | | stockVo.setEntryNum(entryNum == null ? zero:entryNum); |
| | | stockVo.setReturnNum(returnNum == null ? zero : returnNum); |
| | | stockVo.setSaleNum(saleNum == null ? zero: saleNum); |
| | | stockVo.setDeliveryNum(deliveryNum == null ? zero: deliveryNum); |
| | | stockVo.setReturnDeliveryNum(returnDeliveryNum == null ? zero : returnDeliveryNum); |
| | | }*/ |
| | | pageInfo.setResult(stockVos); |
| | | pageInfo.setTotalCount(page.getTotal()); |
| | | } |
| | | |
| | | @Override |
| | | public void selectEnterpriseStockDataGrid(PageInfo pageInfo) { |
| | | Page<StockVo> 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("ascending".equalsIgnoreCase(pageInfo.getOrder())); |
| | | orderItem.setColumn(pageInfo.getSort()); |
| | | }else { |
| | | orderItem.setAsc(false); |
| | | orderItem.setColumn("owner"); |
| | | } |
| | | orderItems.add(orderItem); |
| | | page.setOrders(orderItems); |
| | | if (StringUtils.isBlank(pageInfo.getSort())){ |
| | | pageInfo.setSort("owner"); |
| | | } |
| | | if (StringUtils.isBlank(pageInfo.getOrder())){ |
| | | pageInfo.setOrder("desc"); |
| | | } |
| | | List<Integer>list = new ArrayList<>(); |
| | | for (int i = 1; i<=20; i++){ |
| | | list.add(i); |
| | | } |
| | | List<StockVo> stockVos = stockInfoMapper.selectEnterpriseStockDataGrid(pageInfo.getCondition(),page,list); |
| | | pageInfo.setResult(stockVos); |
| | | pageInfo.setTotalCount(page.getTotal()); |
| | | } |
| | | |
| | | @Override |
| | | public List<NoEntryVo> selectNoEntryCount(Date time, Integer warnPeriod) { |
| | | List<Integer>list = new ArrayList<>(); |
| | | for (int i = 1; i<=20; i++){ |
| | | list.add(i); |
| | | } |
| | | return stockInfoMapper.selectNoEntryCount(time,list,warnPeriod); |
| | | } |
| | | |
| | | @Override |
| | | public void selectNoEntryDetail(PageInfo pageInfo) { |
| | | Page<StockVo> 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("modifieddate"); |
| | | } |
| | | orderItems.add(orderItem); |
| | | page.setOrders(orderItems); |
| | | List<Integer>list = new ArrayList<>(); |
| | | for (int i = 1; i<=20; i++){ |
| | | list.add(i); |
| | | } |
| | | pageInfo.getCondition().put("list",list); |
| | | List<StockVo> stockVoList = stockInfoMapper.selectNoEntryDetail(page,pageInfo.getCondition()); |
| | | pageInfo.setResult(stockVoList); |
| | | pageInfo.setTotalCount(page.getTotal()); |
| | | } |
| | | |
| | | @Override |
| | | public void doReturnBatch(UserInfo userInfo, List<EntryDetailInfo> entryDetailInfos, Date date) { |
| | | for (EntryDetailInfo entryDetailInfo : entryDetailInfos){ |
| | | String directionCode = entryDetailInfo.getDirectioncode(); |
| | | SaleOrderDetailInfo detailInfo = saleOrderService.selectOrderByDirectionReturnflag(directionCode,(byte) 0, null); |
| | | CustomerInfo customerInfo = customerService.getCustomerBySaleOrder(detailInfo.getOrdercode()); |
| | | byte flag = 1; |
| | | detailInfo.setReturnflag(flag); |
| | | saleOrderDetailService.updateById(detailInfo); |
| | | StockInfo stockInfo = selectStockByDirection(directionCode); |
| | | |
| | | if (stockInfo.getModifieddate().compareTo(date)>0){ |
| | | WarnContentInfo warnContentInfo = warnContentService.selectByWarnTypeAndContent("多次售出",stockInfo.getDirectioncode()+"多次售出"); |
| | | if (warnContentInfo != null){ |
| | | warnContentService.removeById(warnContentInfo.getId()); |
| | | } |
| | | }else { |
| | | stockInfo.setOwner(userInfo.getCompanyid().toString()); |
| | | stockInfo.setModifieddate(new Date()); |
| | | stockInfo.setModifiedby(userInfo.getUsername()); |
| | | stockInfo.setStatus(""); |
| | | updateStockInfo(stockInfo); |
| | | } |
| | | //插入流向轨迹 |
| | | ProductLocusInfo productLocusInfo = new ProductLocusInfo(stockInfo.getDirectioncode(), new Date(), new Date(), |
| | | userInfo.getCompany(), customerInfo == null ? null : customerInfo.getId(), ProductLocusInfo.RETURN_ENTRY_STATUS, null); |
| | | productLocusService.insertProductLocus(productLocusInfo); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public List<StockInfo> selectStockByProductId(Long id) { |
| | | String slice = productService.getSlice(id); |
| | | List<StockInfo>stockInfos = new ArrayList<>(); |
| | | if (StringUtils.isBlank(slice)){ |
| | | return stockInfos; |
| | | } |
| | | return stockInfoMapper.selectStockByProductId(id,slice); |
| | | } |
| | | |
| | | @Override |
| | | public PageInfoExtension<Map> selectEnterpriseSaleDataGrid(PageInfo pageInfo) { |
| | | Page<StockVo> 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("ascending".equalsIgnoreCase(pageInfo.getOrder())); |
| | | orderItem.setColumn(pageInfo.getSort()); |
| | | }else { |
| | | orderItem.setAsc(false); |
| | | orderItem.setColumn("companynumber"); |
| | | } |
| | | orderItems.add(orderItem); |
| | | page.setOrders(orderItems); |
| | | if (StringUtils.isBlank(pageInfo.getSort())){ |
| | | pageInfo.setSort("companynumber"); |
| | | } |
| | | if (StringUtils.isBlank(pageInfo.getOrder())){ |
| | | pageInfo.setOrder("desc"); |
| | | } |
| | | List<Integer>list = new ArrayList<>(); |
| | | for (int i = 1; i<=20; i++){ |
| | | list.add(i); |
| | | } |
| | | List<StockVo> stockVos = stockInfoMapper.selectEnterpriseSaleDataGrid(pageInfo.getCondition(),page,list); |
| | | Map total = stockInfoMapper.selectEnterpriseSaleDataCount(pageInfo.getCondition(), list); |
| | | pageInfo.setResult(stockVos); |
| | | pageInfo.setTotalCount(page.getTotal()); |
| | | PageInfoExtension<Map> extension = new PageInfoExtension<>(pageInfo); |
| | | extension.setExtension(total); |
| | | return extension; |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void selectStockDetailByItemCode(PageInfo pageInfo) { |
| | | Page<StockVo> 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("ascending".equalsIgnoreCase(pageInfo.getOrder())); |
| | | orderItem.setColumn(pageInfo.getSort()); |
| | | }else { |
| | | orderItem.setAsc(false); |
| | | orderItem.setColumn("stock.id"); |
| | | } |
| | | orderItems.add(orderItem); |
| | | page.setOrders(orderItems); |
| | | if (StringUtils.isBlank(pageInfo.getSort())){ |
| | | pageInfo.setSort("stock.id"); |
| | | } |
| | | if (StringUtils.isBlank(pageInfo.getOrder())){ |
| | | pageInfo.setOrder("desc"); |
| | | } |
| | | String itemCode = pageInfo.getCondition().get("itemCode").toString(); |
| | | ProductInfo productInfo = productService.selectByDirection(itemCode); |
| | | if (productInfo != null){ |
| | | String slice = productService.getSlice(itemCode); |
| | | pageInfo.getCondition().put("slice",slice); |
| | | List<StockVo> stockVos = stockInfoMapper.selectStockVoByItemCode(pageInfo.getCondition(),page); |
| | | pageInfo.setResult(stockVos); |
| | | pageInfo.setTotalCount(page.getTotal()); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void selectSaleDetailDataGrid(PageInfo pageInfo) { |
| | | Page<StockVo> 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("companynumber"); |
| | | } |
| | | orderItems.add(orderItem); |
| | | page.setOrders(orderItems); |
| | | if (StringUtils.isBlank(pageInfo.getSort())){ |
| | | pageInfo.setSort("companynumber"); |
| | | } |
| | | if (StringUtils.isBlank(pageInfo.getOrder())){ |
| | | pageInfo.setOrder("desc"); |
| | | } |
| | | List<StockVo>stockVoList = stockInfoMapper.selectSaleDetailDataGrid(pageInfo.getCondition(),page); |
| | | pageInfo.setResult(stockVoList); |
| | | pageInfo.setTotalCount(page.getTotal()); |
| | | } |
| | | |
| | | @Override |
| | | public PageInfoExtension<StockTotal> selectDataGridExtensions(PageInfo pageInfo) { |
| | | |
| | | List<Integer> slices = new ArrayList<Integer>(){{ |
| | | for (int i = 1; i <= 20; i++) { |
| | | add(i); |
| | | } |
| | | }}; |
| | | |
| | | List<StockVo> stockVos = stockInfoMapper.selectStockDataGrid(pageInfo.getCondition(),null,slices); |
| | | pageInfo.setResult(stockVos); |
| | | pageInfo.setTotalCount((long) stockVos.size()); |
| | | StockTotal stockTotal = new StockTotal(BigDecimal.ZERO); |
| | | if (stockVos.size() > 0) { |
| | | stockVos.forEach(item->{ |
| | | BigDecimal toAdd = BigDecimal.ZERO; |
| | | if (item.getCountNum() != null ) |
| | | toAdd = item.getCountNum(); |
| | | stockTotal.setCountNum(stockTotal.getCountNum().add(toAdd)); |
| | | }); |
| | | } |
| | | |
| | | PageInfoExtension<StockTotal> extension = new PageInfoExtension<>(pageInfo); |
| | | extension.setExtension(stockTotal); |
| | | return extension; |
| | | } |
| | | |
| | | @Override |
| | | public PageInfoExtension<ProductVo> selectCurrentFireStatus(Integer pageIndex,Integer pageSize, Map filter, UserInfo user) { |
| | | String directioncode = (String) filter.get("directioncode"); |
| | | if (StringUtils.isBlank(directioncode) || FireworkDeal.isNotDirectionCode(directioncode)) |
| | | throw new BusinessException("请输入合法的流向码"); |
| | | |
| | | DirectionDetail directionDetail = FireworkDeal.dealDirectionCode(directioncode); |
| | | |
| | | ProductVo productVo = productService.selectVoByDirection(directioncode); |
| | | if (productVo == null) throw new BusinessException("产品不存在"); |
| | | |
| | | //分表 |
| | | String slice = productService.getSlice(directioncode); |
| | | List<ProductVo> productVos = new ArrayList<>(); |
| | | List<StockInfo> records; |
| | | List<String> codes = null; |
| | | PageInfoExtension<ProductVo> extension = new PageInfoExtension<>(); |
| | | //22位 |
| | | if (FireworkDeal.is22Characters(directioncode)) { |
| | | FireworkDeal.getProductVos(directioncode,directionDetail,directionDetail,productVos,productVo); |
| | | if (productVos.size() < 1) throw new BusinessException("产品流向码出现问题"); |
| | | |
| | | codes = new ArrayList<String>() {{ |
| | | for (ProductVo product : productVos) { |
| | | add(product.getDirectionCode()); |
| | | } |
| | | }}; |
| | | } |
| | | //19位 |
| | | if (FireworkDeal.is19Characters(directioncode)) { |
| | | codes = new ArrayList<String>(){{ |
| | | add(directioncode); |
| | | }}; |
| | | } |
| | | |
| | | //条件准备 |
| | | Map<String, Object> params = new HashMap<>(); |
| | | String status = (String) filter.get("status"); |
| | | //1.已售出 |
| | | if ("已售出".equals(status)) |
| | | params.put("status", status); |
| | | |
| | | if ("未入库".equals(status)) { |
| | | params.put("status", ""); |
| | | params.put("owner", ""); |
| | | } |
| | | |
| | | if ("已入库".equals(status)) { |
| | | params.put("status", ""); |
| | | params.put("owner", "库存owner"); |
| | | } |
| | | |
| | | |
| | | params.put("directioncode", directioncode); |
| | | //查询结果集 |
| | | records = stockInfoMapper.selectCurrentFireStatus(codes,params,slice); |
| | | |
| | | |
| | | extension.setExtension(productVo); |
| | | extension.setResult(records); |
| | | extension.setPageIndex(pageIndex); |
| | | extension.setPageSize(pageSize); |
| | | //总数 |
| | | assert codes != null; |
| | | extension.setTotalCount((long) codes.size()); |
| | | return extension; |
| | | } |
| | | |
| | | @Override |
| | | public List<StockVo> selectEnterpriseStocks(Map<String, Object> condition) { |
| | | List<Integer>list = new ArrayList<>(); |
| | | for (int i = 1; i<=20; i++){ |
| | | list.add(i); |
| | | } |
| | | return stockInfoMapper.selectEnterpriseStocks(condition,list); |
| | | } |
| | | |
| | | @Override |
| | | public void saveOrUpdateCurrentStock(String updatedBy) { |
| | | Map<String, Object> condition = new HashMap<>(16); |
| | | List<StockVo>stockVos = selectEnterpriseStocks(condition); |
| | | List<StaticStock>staticStocks = new ArrayList<>(); |
| | | for (StockVo stockVo : stockVos){ |
| | | Enterprise enterprise = enterpriseService.getById(stockVo.getOwner()); |
| | | StaticStock staticStock = new StaticStock(Long.parseLong(stockVo.getOwner()),stockVo.getEnterpriseName(),stockVo.getEnterpriseNumber(), |
| | | enterprise.getSafetysupervision(),stockVo.getProvince(),stockVo.getCity(),stockVo.getDistrict(), |
| | | stockVo.getStockNum(), stockVo.getFirecracker(),stockVo.getSpray(),stockVo.getRotation(),stockVo.getBead(), |
| | | stockVo.getToy(),stockVo.getCombined(),updatedBy,new Date(),(byte)0 ); |
| | | StaticStock staticStock1 = staticStockService.getByOwner(Long.parseLong(stockVo.getOwner())); |
| | | if (staticStock1 != null){ |
| | | staticStock.setId(staticStock1.getId()); |
| | | } |
| | | staticStocks.add(staticStock); |
| | | } |
| | | staticStockService.saveOrUpdateBatch(staticStocks); |
| | | } |
| | | |
| | | @Override |
| | | public boolean clearStock(Enterprise enterprise) { |
| | | /*List<StockInfo>stocks = selectEnterpriseAllStock(enterprise); |
| | | |
| | | stocks.forEach(item->{ |
| | | item.setRemark(); |
| | | item.setOwner(""); |
| | | item.setModifieddate(date); |
| | | });*/ |
| | | Date date = new Date(); |
| | | |
| | | String remark = "系统管理员清空,清空前归属:"+enterprise.getId()+",清空时间:"+new DateTime(date).toString("yyyy-MM-dd HH:mm:ss"); |
| | | |
| | | for (int i = 1; i<=20; i++){ |
| | | int flag = stockInfoMapper.clearStock(enterprise.getId(),remark,date,"_slice"+i); |
| | | } |
| | | |
| | | /*for (StockInfo stockInfo : stocks){ |
| | | updateStockInfo(stockInfo); |
| | | }*/ |
| | | StaticStock staticStock = staticStockService.getByOwner(enterprise.getId()); |
| | | staticStock.setStockNum(new BigDecimal("0")); |
| | | staticStock.setFirecracker(new BigDecimal("0")); |
| | | staticStock.setSpray(new BigDecimal("0")); |
| | | staticStock.setRotation(new BigDecimal("0")); |
| | | staticStock.setBead(new BigDecimal("0")); |
| | | staticStock.setToy(new BigDecimal("0")); |
| | | staticStock.setCombined(new BigDecimal("0")); |
| | | staticStock.setUpdateat(date); |
| | | staticStockService.updateById(staticStock); |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | | public boolean clearStockByItems(Enterprise enterprise, List<String> list) { |
| | | Date date = new Date(); |
| | | |
| | | String remark = "系统管理员清空,清空前归属:"+enterprise.getId()+",清空时间:"+new DateTime(date).toString("yyyy-MM-dd HH:mm:ss"); |
| | | |
| | | for (int i = 1; i<=20; i++){ |
| | | int flag = stockInfoMapper.clearStockByItem(enterprise.getId(),list,remark,date,"_slice"+i); |
| | | } |
| | | |
| | | /*StaticStock staticStock = staticStockService.getByOwner(enterprise.getId()); |
| | | staticStock.setStockNum(new BigDecimal("0")); |
| | | staticStock.setFirecracker(new BigDecimal("0")); |
| | | staticStock.setSpray(new BigDecimal("0")); |
| | | staticStock.setRotation(new BigDecimal("0")); |
| | | staticStock.setBead(new BigDecimal("0")); |
| | | staticStock.setToy(new BigDecimal("0")); |
| | | staticStock.setCombined(new BigDecimal("0")); |
| | | staticStock.setUpdateat(date); |
| | | staticStockService.updateById(staticStock);*/ |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | | public StockInfo selectStockByDirectionAndSlice(String directionCodeStr, String slice) { |
| | | if (slice == null || StringUtils.isBlank(directionCodeStr)) { |
| | | throw new BusinessException("系统入参为空"); |
| | | } |
| | | return stockInfoMapper.selectStockByDirection(directionCodeStr,slice); |
| | | } |
| | | |
| | | @Override |
| | | public int insertStockInfoBySlice(StockInfo stockInfo, String slice) { |
| | | if (stockInfo == null || StringUtils.isBlank(slice)) { |
| | | throw new BusinessException("系统入参为空"); |
| | | } |
| | | return stockInfoMapper.insertStockInfo(stockInfo, slice); |
| | | } |
| | | |
| | | @Override |
| | | public int updateStockInfoBySlice(StockInfo stockInfo, String slice) { |
| | | if (stockInfo == null || StringUtils.isBlank(slice)) { |
| | | throw new BusinessException("系统入参为空"); |
| | | } |
| | | return stockInfoMapper.updateStockInfo(stockInfo, slice); |
| | | } |
| | | |
| | | |
| | | private List<StockInfo> selectEnterpriseAllStock(Enterprise enterprise) { |
| | | List<Integer>list = new ArrayList<>(); |
| | | for (int i = 1; i<=20; i++){ |
| | | list.add(i); |
| | | } |
| | | return stockInfoMapper.selectEnterpriseAllStock(enterprise.getId(),list); |
| | | } |
| | | |
| | | @Override |
| | | public List<StockInfo> selectEarlyWarn(Integer min, Integer max, String enterprisetype,List<Integer> slices) { |
| | | return stockInfoMapper.selectEarlyWarn(min, max, enterprisetype,slices); |
| | | } |
| | | |
| | | @Override |
| | | public List<StockInfo> selectAlarm(Integer max, String enterprisetype, List<Integer> slices) { |
| | | return stockInfoMapper.selectAlarm(max, enterprisetype, slices); |
| | | } |
| | | |
| | | } |