package com.gk.firework.Service.ServiceImpl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gk.firework.Domain.EntryDetailInfo; import com.gk.firework.Domain.EntryOrderInfo; import com.gk.firework.Domain.Exception.BusinessException; import com.gk.firework.Domain.SoldNoStockInfo; import com.gk.firework.Domain.UserInfo; import com.gk.firework.Domain.Vo.EntryOrderInfoVo; import com.gk.firework.Domain.Vo.EntryUtils; import com.gk.firework.Domain.Vo.FireworkDeal; import com.gk.firework.Domain.Vo.ProductVo; import com.gk.firework.Mapper.EntryDetailInfoMapper; import com.gk.firework.Domain.Utils.StringUtils; import com.gk.firework.Mapper.EntryOrderInfoMapper; import com.gk.firework.Service.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; import java.util.List; import java.util.ArrayList; import java.util.Date; /** * @author : jingjy * @date : 2021/3/24 11:10 */ @Service("EntryService") public class EntryServiceImpl extends ServiceImpl implements EntryService{ @Autowired private ProductService productService; @Autowired private EntryService entryService; @Autowired private EntryDetailService entryDetailService; @Autowired private SoldNoStockService soldNoStockService; @Autowired private SaleOrderService orderService; @Override public void entryPatch(List soldNoStockInfos, UserInfo user, String auth) { EntryOrderInfo orderInfo = generateEntryOrderInfo(EntryUtils.RK_ENTRY,user,new Date(),"",auth); ListdetailInfos = new ArrayList<>(); int i = 0; for (SoldNoStockInfo soldNoStockInfo : soldNoStockInfos){ String dire = soldNoStockInfo.getDirectioncode(); ProductVo productVo = productService.selectVoByDirection(dire); EntryDetailInfo detailInfo = new EntryDetailInfo(orderInfo.getCode(),dire,productVo.getItemCode(), productVo.getName(),productVo.getManufacturer(),new Date(),user.getCompanynumber()); //已销未入库信息只会存19位流向码信息 detailInfo.setNum(1); detailInfos.add(detailInfo); i++; //更新soldNoStock信息 soldNoStockInfo.setHandler(user.getUsername()); soldNoStockInfo.setHandledat(new Date()); soldNoStockInfo.setEntryorder(orderInfo.getCode()); soldNoStockInfo.setFlag(SoldNoStockInfo.PROCESSED); } //插入入库单及入库明细单,更新已销未入库单,不更新库存 orderInfo.setNum(i); entryService.save(orderInfo); entryDetailService.saveBatch(detailInfos); soldNoStockService.updateBatchById(soldNoStockInfos); } @Autowired private EntryOrderInfoMapper entryOrderInfoMapper; @Autowired private UserService userService; @Autowired private EntryDetailInfoMapper entryDetailInfoMapper; /** * @Description: 入库查询 * @date 2021/4/15 10:28 */ @Override public IPage selectPage(Page page, Map filter, UserInfo user) { UserInfo userInfo = userService.getById(user.getId()); Map params = new HashMap<>(); //筛选条件 //可视权限 { params.put("enterprisenumber", userInfo.getCompanynumber()); params.put("province", userInfo.getProvince()); params.put("city", userInfo.getCity()); params.put("district", userInfo.getArea()); params.put("street", userInfo.getTown()); params.put("committee", userInfo.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("transportcert", filter.get("transportcert")); params.put("starttime", filter.get("starttime")); params.put("endtime", filter.get("endtime")); params.put("enterprisename", filter.get("enterprisename")); params.put("safetysupervision", filter.get("safetysupervision")); params.put("type", filter.get("type")); params.put("code", filter.get("code")); } List list = entryOrderInfoMapper.selectPages(page,params); return page.setRecords(list); } /** * @Description: 根据{入库单code}查询入库明细 * @date 2021/4/15 11:12 */ @Override public Page selectDetailPage(Page page, Map filter) { String code = (String) filter.get("code"); if (StringUtils.isBlank(code)) { throw new BusinessException("入库单号不能为空"); } Map params = new HashMap<>(); params.put("code", code); params.put("starttime", filter.get("starttime")); params.put("endtime", filter.get("endtime")); List list = entryDetailInfoMapper.selectDetailPage(page, params); return page.setRecords(list); } @Override public BigDecimal getEntryNumByCondition(Map condition) { return entryDetailInfoMapper.getEntryNumByCondition(condition); } @Override public BigDecimal getReturnNumByCondition(Map condition) { return entryDetailInfoMapper.getReturnNumByCondition(condition); } @Override public boolean isEntryExist(String datetime, UserInfo userInfo) { EntryOrderInfo entryOrderInfo = entryOrderInfoMapper.selectEntryOrderByTimeAndUser(datetime,userInfo.getUsername()); return entryOrderInfo != null; } /** * @Description: 入库导出 * @date 2021/4/19 17:13 */ @Override public List selectExportInBound(Map filter, UserInfo user) { UserInfo userInfo = userService.getById(user.getId()); Map params = new HashMap<>(); //筛选条件 //可视权限 { params.put("enterprisenumber", userInfo.getCompanynumber()); params.put("province", userInfo.getProvince()); params.put("city", userInfo.getCity()); params.put("district", userInfo.getArea()); params.put("street", userInfo.getTown()); params.put("committee", userInfo.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("transportcert", filter.get("transportcert")); params.put("starttime", filter.get("starttime")); params.put("endtime", filter.get("endtime")); params.put("enterprisename", filter.get("enterprisename")); params.put("type", filter.get("type")); } return entryOrderInfoMapper.selectPages(params); } @Override public BigDecimal selectEnterpriseEntryNumber(String enterprisenumber, Object starttime, Object endtime) { return entryOrderInfoMapper.selectEnterpriseEntryNumber(enterprisenumber,starttime,endtime); } @Override public BigDecimal selectCityEntryNumber(String name, Object starttime, Object endtime) { return entryOrderInfoMapper.selectCityEntryNumber(name,starttime,endtime); } @Override public Boolean isTransportCertEntry(String code) { if (StringUtils.isBlank(code)){ return false; } List entryOrderInfo = entryOrderInfoMapper.selectByCert(code); return entryOrderInfo != null && entryOrderInfo.size() > 0; } @Override public IPage selectStockPage(Page page, Map filter, UserInfo user) { 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("transportcert", filter.get("transportcert")); params.put("starttime", filter.get("starttime")); params.put("endtime", filter.get("endtime")); params.put("enterprisename", filter.get("enterprisename")); params.put("type", filter.get("type")); } List list = entryOrderInfoMapper.selectPages(page,params); return page.setRecords(list); } @Override public EntryOrderInfo generateEntryOrderInfo(String type, UserInfo userInfo, Date date, String transport, String auth){ EntryOrderInfo orderInfo = new EntryOrderInfo(); orderInfo.setCode(orderService.generateOrderCode(FireworkDeal.MODULE_ENTRY,type,new Date(),userInfo.getId())); orderInfo.setType(Byte.parseByte(type)); orderInfo.setCreateddate(new Date()); orderInfo.setCreatedby(userInfo.getUsername()); orderInfo.setEntrydate(date); orderInfo.setTransportcert(transport); orderInfo.setUnit(userInfo.getCompany()); orderInfo.setCompanynumber(userInfo.getCompanynumber()); return orderInfo; } }