package com.gk.firework.Controller; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.gk.firework.Controller.Base.BaseController; import com.gk.firework.Domain.*; import com.gk.firework.Domain.Enum.ErrorCode; import com.gk.firework.Domain.Extension.StockTotal; import com.gk.firework.Domain.Log.JsonParams; import com.gk.firework.Domain.Utils.BeanUtils; 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.Service.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; import static com.gk.firework.Domain.Enum.ErrorCode.*; /** * @author : jingjy * @date : 2021/3/19 11:06 */ @Api(tags = "库存接口") @RestController @RequestMapping("/stock") public class StockController extends BaseController { @Autowired private ProductService productService; @Autowired private UserService userService; @Autowired private EntryService entryService; @Autowired private EntryDetailService entryDetailService; @Autowired private StockService stockService; @Autowired private ProductLocusService productLocusService; @Autowired private EnterpriseService enterpriseService; @Autowired private StaticStockService staticStockService; @PostMapping("/entrySingle") @JsonParams public Msg entrySingle(@RequestBody JSONObject jsonObject){ Msg msg = new Msg(true); String userId = jsonObject.getString("id"); String type = jsonObject.getString("type"); String date = jsonObject.getString("time"); String rfids = jsonObject.getString("rfids"); String transport = jsonObject.getString("cert"); UserInfo userInfo = userService.getById(userId); Date datetime; DateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { datetime = dateFormat1.parse(date); } catch (ParseException e) { msg.setCode(ERROR_10003.getCode()); msg.setMessage(ERROR_10003.getMsg()+":入库日期类型错误!"); return msg; } String auth = getAuth(); auth = StringUtils.isBlank(auth) ? "NOAUTH" : auth; EntryOrderInfo orderInfo = entryService.generateEntryOrderInfo(type,userInfo,datetime,transport, auth); if (StringUtils.isBlank(userId) || StringUtils.isBlank(rfids)){ msg.setCode(ERROR_10001.getCode()); msg.setMessage(ERROR_10001.getMsg()+":用户信息或者流向码为空,无法入库"); return msg; } if (EntryUtils.RK_ENTRY.equals(type)){ //一般入库 ListdirectionCodes = StringUtils.toList(rfids); List productVos = new ArrayList<>(); ListdetailInfos = new ArrayList<>(); ListlocusInfos = new ArrayList<>(); //入库数量 int entryNum = 0; for (String dire:directionCodes) { if (FireworkDeal.isNotDirectionCode(dire)){ msg.setCode(ERROR_10004.getCode()); msg.setMessage(ERROR_10004.getMsg()+":流向码:"+dire+" 不符合规则,无法识别!"); return msg; } DirectionDetail detail = FireworkDeal.dealDirectionCode(dire); if (productService.hasProductByDire(dire)){ msg.setCode(ERROR_50001.getMsg()); msg.setMessage(ERROR_50001.getMsg()+":流向码:"+dire+" 未找到相应产品信息!"); return msg; } ProductVo productVo = productService.selectVoByDirection(dire); EntryDetailInfo detailInfo = new EntryDetailInfo(orderInfo.getCode(),dire,productVo.getItemCode(), productVo.getName(),productVo.getManufacturer(),new Date(),userInfo.getCompanynumber()); if (detail.getLength() == FireworkDeal.DIRECTION_OUTSIDE){ ProductLocusInfo productLocusInfo = new ProductLocusInfo(dire,new Date(),datetime, userInfo.getCompany(), null,ProductLocusInfo.ENTRY_STATUS,productVo.getBoxNumber().toString()); locusInfos.add(productLocusInfo); } detailInfos.add(detailInfo); if (detail.getBoxNo() == null){ entryNum += 1; }else { entryNum += Integer.parseInt(detail.getBoxNo()); } if (detail.getLength() == FireworkDeal.DIRECTION_OUTSIDE){ FireworkDeal.getProductVos(dire, detail, detail, productVos, productVo); }else if (detail.getLength() == FireworkDeal.DIRECTION_INSIDE){ ProductInfo productVo1 = productService.selectByDirection(dire); productVo1.setDirectionCode(dire); ProductVo productVo2 = BeanUtils.copy(productVo1,ProductVo.class); FireworkDeal.setProductVosAttribute(productVo2); productVos.add(productVo2); } } boolean flag = stockService.putInStorage(userInfo,productVos,datetime, type); if (flag){ orderInfo.setNum(entryNum); entryService.save(orderInfo); entryDetailService.saveBatch(detailInfos); productLocusService.insertBatch(locusInfos); }else { msg.setCode(ERROR_40001.getCode()); msg.setMessage(ERROR_40001.getMsg()+"库存入库失败"); return msg; } } return msg; } @PostMapping("/entryBatch") @JsonParams public List entryBatch(@RequestBody JSONArray jsonArray){ List msgList = new ArrayList<>(); if (jsonArray.size() < 1){ return null; } for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); msgList.add(entrySingle(jsonObject)); } return msgList; } @ApiOperation(value = "通用入库",response = Msg.class) @ApiImplicitParams({ @ApiImplicitParam(name = "JSONArray",value = "json数组,json对象为:{id:'用户ID',rfids:'流向码',time:'入库时间',cert:'运输证',type:'入库类型'}"), }) @PostMapping("/entry") @JsonParams public Msg entryStock(@RequestBody JSONArray jsonArray){ if (jsonArray.size() > 0) { for (int i = 0; i < jsonArray.size(); i++) { // 遍历 jsonArray 数组,把每一个对象转成 json 对象 JSONObject jsonObject = jsonArray.getJSONObject(i); String userId = jsonObject.getString("id"); String directionCodeStr = jsonObject.getString("rfids"); String datetime = jsonObject.getString("time"); String transport = jsonObject.getString("cert"); Date date; DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { date = dateFormat.parse(datetime); } catch (ParseException e) { return new Msg(ERROR_10003,"入库日期类型错误!"); } //type 1.常规入库; 2.退货入库 String type = jsonObject.getString("type"); if (StringUtils.isBlank(type)){ return new Msg(ERROR_10001,"入库类型不能为空"); } if (StringUtils.isBlank(directionCodeStr)){ return new Msg(ERROR_10001,"流向码不能为空"); } boolean isUser = userService.checkUserById(userId); if (!isUser){ return new Msg(ERROR_50001,"未找到相关用户信息,不能入库!"); } UserInfo userInfo = userService.getById(userId); //判断是否存在同时间同操作人入库记录 boolean exist = entryService.isEntryExist(datetime,userInfo); if (exist){ continue; } String auth = getAuth(); auth = StringUtils.isBlank(auth) ? "NOAUTH" : auth; List directionCodes = StringUtils.toList(directionCodeStr); EntryOrderInfo orderInfo = entryService.generateEntryOrderInfo(type,userInfo,date,transport, auth); int boxNum = 0; ListdetailInfos = new ArrayList<>(); ListlocusInfos = new ArrayList<>(); List productVos = new ArrayList<>(); for (String dire:directionCodes) { if (FireworkDeal.isNotDirectionCode(dire)){ return new Msg(ERROR_10004,"流向码:"+dire+" 不符合规则,无法识别!"); } DirectionDetail detail = FireworkDeal.dealDirectionCode(dire); if (productService.hasProductByDire(dire)){ return new Msg(ERROR_50001,":流向码:"+dire+" 未找到相应产品信息!"); } ProductVo productVo = productService.selectVoByDirection(dire); EntryDetailInfo detailInfo = new EntryDetailInfo(orderInfo.getCode(),dire,productVo.getItemCode(), productVo.getName(),productVo.getManufacturer(),new Date(),userInfo.getCompanynumber()); if (detail.getLength() == FireworkDeal.DIRECTION_OUTSIDE){ ProductLocusInfo productLocusInfo = new ProductLocusInfo(dire,new Date(),date, userInfo.getCompany(), null,ProductLocusInfo.ENTRY_STATUS,productVo.getBoxNumber().toString()); locusInfos.add(productLocusInfo); } if (detail.getLength() == FireworkDeal.DIRECTION_OUTSIDE){ FireworkDeal.getProductVos(dire, detail, detail, productVos, productVo); detailInfo.setBoxcode(detail.getOriginalCode()); detailInfo.setNum(Integer.parseInt(detail.getBoxNo())); boxNum += Integer.parseInt(detail.getBoxNo()); }else if (detail.getLength() == FireworkDeal.DIRECTION_INSIDE){ ProductInfo productVo1 = productService.selectByDirection(dire); ProductVo productVo2 = BeanUtils.copy(productVo1,ProductVo.class); productVo2.setItemCode(dire.substring(0,10)); productVo2.setDirectionCode(dire); productVos.add(productVo2); detailInfo.setNum(1); boxNum +=1; } detailInfos.add(detailInfo); } orderInfo.setNum(boxNum); entryService.save(orderInfo); entryDetailService.saveBatch(detailInfos); productLocusService.insertBatch(locusInfos); boolean flag = stockService.putInStorage(userInfo,productVos,date,type); } } return success(); } /** * * @param jsonArray [{"id":"用户ID","type":"快速入库填1","time":"时间","cert":"运输证编号","rfidfirst":"第一箱的流向码","rfidlast":"最后一箱的流向码"}] * @return msg */ @ApiOperation(value = "快速入库",response = Msg.class) @ApiImplicitParams({ @ApiImplicitParam(name = "JSONArray",value = "json数组,json对象为:{\"id\":\"用户ID\",\"type\":\"快速入库填1\",\"time\":\"时间\",\"cert\":\"运输证编号\",\"rfidfirst\":\"第一箱的流向码\",\"rfidlast\":\"最后一箱的流向码\"}"), }) @PostMapping("/entryQuick") @JsonParams public Msg entryQuick(@RequestBody JSONArray jsonArray){ Msg msg = new Msg(true); if (jsonArray.size() > 0) { for (int i = 0; i < jsonArray.size(); i++) { // 遍历 jsonArray 数组,把每一个对象转成 json 对象 JSONObject jsonObject = jsonArray.getJSONObject(i); String userId = jsonObject.getString("id"); String directionCodeFirst = jsonObject.getString("rfidfirst"); String directionCodeLast = jsonObject.getString("rfidlast"); String datetime = jsonObject.getString("time"); String transport = jsonObject.getString("cert"); //type 1.常规入库; 2.退货入库 String type = "1"; Date date; DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { date = dateFormat.parse(datetime); } catch (ParseException e) { msg.setCode(ERROR_10003.getCode()); msg.setMessage(ERROR_10003.getMsg()+":入库日期类型错误!"); return msg; } if (!(FireworkDeal.is22Characters(directionCodeFirst) && FireworkDeal.is22Characters(directionCodeLast))){ msg.setCode(ERROR_10004.getCode()); msg.setMessage(ERROR_10004.getMsg()+":流向码首尾不符合规则,无法快速入库!"); return msg; } boolean isUser = userService.checkUserById(userId); if (!isUser){ msg.setCode(ERROR_50001.getCode()); msg.setMessage(ERROR_50001.getMsg()+":未找到相关用户信息,不能入库!"); return msg; } UserInfo userInfo = userService.getById(userId); //判断是否存在同时间同操作人入库记录 boolean exist = entryService.isEntryExist(datetime,userInfo); if (exist){ continue; } String auth = getAuth(); auth = StringUtils.isBlank(auth) ? "NOAUTH" : auth; EntryOrderInfo orderInfo = entryService.generateEntryOrderInfo(type,userInfo,date,transport, auth); ListdetailInfos = new ArrayList<>(); ListlocusInfos = new ArrayList<>(); List productVos = new ArrayList<>(); DirectionDetail detailFirst = FireworkDeal.dealDirectionCode(directionCodeFirst); DirectionDetail detailLast = FireworkDeal.dealDirectionCode(directionCodeLast); if (!detailFirst.getItemCode().equals(detailLast.getItemCode())){ msg.setCode(ERROR_10004.getCode()); msg.setMessage(ERROR_10004.getMsg()+":首尾商品编码不一致,无法快速入库"); return msg; } if (Integer.parseInt(detailFirst.getSerialNo()) > Integer.parseInt(detailLast.getSerialNo())){ msg.setCode(ERROR_10004.getCode()); msg.setMessage(ERROR_10004.getMsg()+":首位商品序号大于末位,无法快速入库"); return msg; } ProductVo productVo = productService.selectVoByDirection(directionCodeFirst); Integer firstNo = Integer.parseInt(detailFirst.getSerialNo()); Integer lastNo = Integer.parseInt(detailLast.getSerialNo()); int perBoxNum = Integer.parseInt(detailFirst.getBoxNo()); int boxNum = ((lastNo-firstNo)/perBoxNum)+1; int totalNum = 0; for (int j=1;j<= boxNum;j++){ String dire = detailFirst.getItemCode()+detailFirst.getDateCode()+ String.format("%05d", firstNo)+String.format("%03d", perBoxNum); EntryDetailInfo detailInfo = new EntryDetailInfo(orderInfo.getCode(),dire,productVo.getItemCode(), productVo.getName(),productVo.getManufacturer(),new Date(),userInfo.getCompanynumber()); detailInfo.setNum(perBoxNum); detailInfos.add(detailInfo); ProductLocusInfo productLocusInfo = new ProductLocusInfo(dire,new Date(),date, userInfo.getCompany(), null,ProductLocusInfo.ENTRY_STATUS,productVo.getBoxNumber().toString()); locusInfos.add(productLocusInfo); firstNo+=perBoxNum; totalNum += perBoxNum; } FireworkDeal.getProductVos(directionCodeFirst,detailFirst,detailLast,productVos,productVo); orderInfo.setNum(totalNum); entryService.save(orderInfo); entryDetailService.saveBatch(detailInfos); productLocusService.insertBatch(locusInfos); boolean flag = stockService.putInStorage(userInfo,productVos,date, type); } } return msg; } @GetMapping("/info") public Msg getList(@RequestParam(value = "name", required = false) String name, @RequestParam(value = "directionCode", required = false) String directionCode, @RequestParam(value = "manufacturer", required = false) String manufacturer, @RequestParam(value = "type", required = false) String type, @RequestParam(value = "secondaryType", required = false) String secondaryType, @RequestParam(value = "beginDate") String beginDate, @RequestParam(value = "endDate") String endDate, @RequestParam(value = "owner")String owner, @RequestParam(defaultValue = "0") Integer pageIndex, @RequestParam(defaultValue = "10") Integer pageSize, String sort, String order){ Msg msg = new Msg(true); PageInfo pageInfo = new PageInfo(pageIndex, pageSize,sort,order); Map condition = new HashMap<>(8); if (StringUtils.isNotBlank(name)) { condition.put("name", name); } if (StringUtils.isNotBlank(directionCode)) { condition.put("directionCode", directionCode); } if (StringUtils.isNotBlank(manufacturer)) { condition.put("manufacturer", manufacturer); } if (StringUtils.isNotBlank(type)) { condition.put("type", type); } if (StringUtils.isNotBlank(secondaryType)) { condition.put("secondaryType", secondaryType); } // if (getUser().getCompanyid() != null){ // owner = getUser().getCompanyid().toString(); // } condition.put("owner",owner); condition.put("beginDate",beginDate); condition.put("endDate",endDate); pageInfo.setCondition(condition); stockService.selectDataGrid(pageInfo); msg.setResult(pageInfo); return msg; } @GetMapping("/info-app") public Msg getList2() { PageInfo pageInfo = new PageInfo(); Map condition = new HashMap<>(); UserInfo user = getUser(); UserInfo userInfo = userService.getById(user); condition.put("owner",userInfo.getCompanyid()); pageInfo.setCondition(condition); PageInfoExtension extension = stockService.selectDataGridExtensions(pageInfo); return success(extension); } @GetMapping("/enterpriseStock") public Msg getEnterpriseStockList(@RequestParam(value = "name", required = false) String name, @RequestParam(value = "province", required = false) String province, @RequestParam(value = "city", required = false) String city, @RequestParam(value = "area", required = false) String area, @RequestParam(value = "town", required = false) String town, @RequestParam(value = "community", required = false) String community, @RequestParam(value = "enterpriseType", required = false) String type, @RequestParam(defaultValue = "0") Integer pageIndex, @RequestParam(defaultValue = "10") Integer pageSize, String sort, String order){ Msg msg = new Msg(true); PageInfo pageInfo = new PageInfo(pageIndex, pageSize,sort,order); Map condition = new HashMap<>(16); if (StringUtils.isNotBlank(name)) { condition.put("name", name); } if (StringUtils.isNotBlank(type)) { condition.put("type", type); } if (StringUtils.isNotBlank(province)) { condition.put("province", province); } if (StringUtils.isNotBlank(city)) { condition.put("city", city); } if (StringUtils.isNotBlank(area)) { condition.put("district", area); } if (StringUtils.isNotBlank(town)) { condition.put("town", town); } if (StringUtils.isNotBlank(community)) { condition.put("community", community); } UserInfo userInfo = userService.getById(getUser().getId()); assert userInfo != null; if (userInfo.getCompanynumber() != null){ condition.put("operator",userInfo.getCompanynumber()); List subs = enterpriseService.selectSubEnterprise(userInfo.getCompanyid()); List subList = subs.stream().map(Enterprise::getEnterprisenumber).collect(Collectors.toList()); if (subList.size() > 0) condition.put("subList", subList); } //根据用户省市区权限添加/修改查询条件 if (userInfo.getCompanyid() == null && userInfo.getType() == 3){ boolean provinceNull = StringUtils.isBlank(userInfo.getProvince()); boolean cityNull = !provinceNull && StringUtils.isBlank(userInfo.getCity()) ; boolean districtNull = !provinceNull && StringUtils.isNotBlank(userInfo.getCity()) && StringUtils.isBlank(userInfo.getArea()); boolean streetNull = !provinceNull && StringUtils.isNotBlank(userInfo.getCity()) && StringUtils.isNotBlank(userInfo.getArea()) && StringUtils.isBlank(userInfo.getTown()); boolean committeeNull = !provinceNull && StringUtils.isNotBlank(userInfo.getCity()) && StringUtils.isNotBlank(userInfo.getArea()) && StringUtils.isNotBlank(userInfo.getTown()) && StringUtils.isBlank(userInfo.getCommunity()); if (cityNull){ condition.put("province", userInfo.getProvince()); }else if (districtNull){ condition.put("province", userInfo.getProvince()); condition.put("city", userInfo.getCity()); }else if (streetNull){ condition.put("province", userInfo.getProvince()); condition.put("city", userInfo.getCity()); condition.put("district", userInfo.getArea()); }else if (committeeNull){ condition.put("province", userInfo.getProvince()); condition.put("city", userInfo.getCity()); condition.put("district", userInfo.getArea()); condition.put("street", userInfo.getTown()); }else { condition.put("province", userInfo.getProvince()); condition.put("city", userInfo.getCity()); condition.put("district", userInfo.getArea()); condition.put("street", userInfo.getTown()); condition.put("committee", userInfo.getCommunity()); } } pageInfo.setCondition(condition); condition.put("index",(pageIndex-1)*pageSize); condition.put("size",pageSize); // stockService.selectEnterpriseStockDataGrid(pageInfo); // Integer count = enterpriseService.getEnterpriseByLimitCount(condition); // limit #{condition.index},#{condition.size} ListstockVos = stockService.selectEnterpriseStocks(condition); int index = (pageIndex-1)*pageSize; int count = stockVos.size(); int size = index+pageSize; if (size > count){ size = count; } //总计 BigDecimal stockNum = new BigDecimal("0"); BigDecimal firecracker = new BigDecimal("0"); BigDecimal spray = new BigDecimal("0"); BigDecimal rotation = new BigDecimal("0"); BigDecimal bead = new BigDecimal("0"); BigDecimal toy = new BigDecimal("0"); BigDecimal combined = new BigDecimal("0"); if (stockVos.size() > 0) { for (StockVo stockVo : stockVos) { stockNum = stockNum.add(stockVo.getStockNum()); firecracker = firecracker.add(stockVo.getFirecracker()); spray = spray.add(stockVo.getSpray()); rotation = rotation.add(stockVo.getRotation()); bead = bead.add(stockVo.getBead()); toy = toy.add(stockVo.getToy()); combined = combined.add(stockVo.getCombined()); } } Map totalRow = new HashMap<>(); totalRow.put("name", "总计"); totalRow.put("stockNum", stockNum); totalRow.put("firecracker", firecracker); totalRow.put("spray", spray); totalRow.put("rotation", rotation); totalRow.put("bead", bead); totalRow.put("toy", toy); totalRow.put("combined", combined); pageInfo.setResult(stockVos.subList(index,size)); pageInfo.setTotalCount((long) count); PageInfoExtension extension = new PageInfoExtension<>(pageInfo); extension.setExtension(totalRow); msg.setResult(extension); return msg; } @GetMapping("/enterpriseStaticStock") public Msg enterpriseStaticStock(@RequestParam(value = "name", required = false) String name, @RequestParam(value = "province", required = false) String province, @RequestParam(value = "city", required = false) String city, @RequestParam(value = "area", required = false) String area, @RequestParam(value = "town", required = false) String town, @RequestParam(value = "community", required = false) String community, @RequestParam(value = "enterpriseType", required = false) String type, @RequestParam(defaultValue = "0") Integer pageIndex, @RequestParam(defaultValue = "10") Integer pageSize, String sort, String order){ Msg msg = new Msg(true); PageInfo pageInfo = new PageInfo(pageIndex, pageSize,sort,order); Map condition = new HashMap<>(16); if (StringUtils.isNotBlank(name)) { condition.put("name", name); } if (StringUtils.isNotBlank(type)) { condition.put("type", type); } if (StringUtils.isNotBlank(province)) { condition.put("province", province); } if (StringUtils.isNotBlank(city)) { condition.put("city", city); } if (StringUtils.isNotBlank(area)) { condition.put("district", area); } if (StringUtils.isNotBlank(town)) { condition.put("town", town); } if (StringUtils.isNotBlank(community)) { condition.put("community", community); } UserInfo userInfo = userService.getById(getUser().getId()); assert userInfo != null; if (userInfo.getCompanynumber() != null){ condition.put("operator",userInfo.getCompanynumber()); List subs = enterpriseService.selectSubEnterprise(userInfo.getCompanyid()); List subList = subs.stream().map(Enterprise::getEnterprisenumber).collect(Collectors.toList()); if (subList.size() > 0) condition.put("subList", subList); } //根据用户省市区权限添加/修改查询条件 if (userInfo.getCompanyid() == null && userInfo.getType() == 3){ boolean provinceNull = StringUtils.isBlank(userInfo.getProvince()); boolean cityNull = !provinceNull && StringUtils.isBlank(userInfo.getCity()) ; boolean districtNull = !provinceNull && StringUtils.isNotBlank(userInfo.getCity()) && StringUtils.isBlank(userInfo.getArea()); boolean streetNull = !provinceNull && StringUtils.isNotBlank(userInfo.getCity()) && StringUtils.isNotBlank(userInfo.getArea()) && StringUtils.isBlank(userInfo.getTown()); boolean committeeNull = !provinceNull && StringUtils.isNotBlank(userInfo.getCity()) && StringUtils.isNotBlank(userInfo.getArea()) && StringUtils.isNotBlank(userInfo.getTown()) && StringUtils.isBlank(userInfo.getCommunity()); if (cityNull){ condition.put("province", userInfo.getProvince()); }else if (districtNull){ condition.put("province", userInfo.getProvince()); condition.put("city", userInfo.getCity()); }else if (streetNull){ condition.put("province", userInfo.getProvince()); condition.put("city", userInfo.getCity()); condition.put("district", userInfo.getArea()); }else if (committeeNull){ condition.put("province", userInfo.getProvince()); condition.put("city", userInfo.getCity()); condition.put("district", userInfo.getArea()); condition.put("street", userInfo.getTown()); }else { condition.put("province", userInfo.getProvince()); condition.put("city", userInfo.getCity()); condition.put("district", userInfo.getArea()); condition.put("street", userInfo.getTown()); condition.put("committee", userInfo.getCommunity()); } } pageInfo.setCondition(condition); condition.put("index",(pageIndex-1)*pageSize); condition.put("size",pageSize); Liststocks = staticStockService.selectStaticStocks(condition); int index = (pageIndex-1)*pageSize; int count = stocks.size(); int size = index+pageSize; if (size > count){ size = count; } //总计 BigDecimal stockNum = new BigDecimal("0"); BigDecimal firecracker = new BigDecimal("0"); BigDecimal spray = new BigDecimal("0"); BigDecimal rotation = new BigDecimal("0"); BigDecimal bead = new BigDecimal("0"); BigDecimal toy = new BigDecimal("0"); BigDecimal combined = new BigDecimal("0"); if (stocks.size() > 0) { for (StaticStock stock : stocks) { stockNum = stockNum.add(stock.getStockNum()); firecracker = firecracker.add(stock.getFirecracker()); spray = spray.add(stock.getSpray()); rotation = rotation.add(stock.getRotation()); bead = bead.add(stock.getBead()); toy = toy.add(stock.getToy()); combined = combined.add(stock.getCombined()); } } Map totalRow = new HashMap<>(); totalRow.put("name", "总计"); totalRow.put("stockNum", stockNum); totalRow.put("firecracker", firecracker); totalRow.put("spray", spray); totalRow.put("rotation", rotation); totalRow.put("bead", bead); totalRow.put("toy", toy); totalRow.put("combined", combined); pageInfo.setResult(stocks.subList(index,size)); pageInfo.setTotalCount((long) count); PageInfoExtension extension = new PageInfoExtension<>(pageInfo); extension.setExtension(totalRow); msg.setResult(extension); return msg; } @GetMapping("/detail") public Msg getStockDetailByItemCode( @RequestParam(value = "itemCode") String itemCode, @RequestParam(value = "enterpriseNumber") String enterpriseNumber, @RequestParam(value = "directionCode",required = false) String directionCode, @RequestParam(defaultValue = "0") Integer pageIndex, @RequestParam(defaultValue = "10") Integer pageSize, String sort, String order){ Msg msg = new Msg(true); PageInfo pageInfo = new PageInfo(pageIndex, pageSize,sort,order); Map condition = new HashMap<>(16); condition.put("itemCode", itemCode); Enterprise enterprise = enterpriseService.selectEnterpriseByNumber(enterpriseNumber); if (enterprise == null){ return new Msg(ERROR_50001); } condition.put("owner", enterprise.getId()); if (StringUtils.isNotBlank(directionCode)) { condition.put("directionCode", directionCode); } pageInfo.setCondition(condition); stockService.selectStockDetailByItemCode(pageInfo); msg.setResult(pageInfo); return msg; } @GetMapping("/enterpriseSale") public Msg getEnterpriseSaleList(@RequestParam(value = "name", required = false) String name, @RequestParam(value = "beginDate") String beginDate, @RequestParam(value = "endDate") String endDate, @RequestParam(value = "province", required = false) String province, @RequestParam(value = "city", required = false) String city, @RequestParam(value = "area", required = false) String area, @RequestParam(value = "town", required = false) String town, @RequestParam(value = "community", required = false) String community, @RequestParam(value = "enterpriseType", required = false) String type, @RequestParam(defaultValue = "0") Integer pageIndex, @RequestParam(defaultValue = "10") Integer pageSize, String sort, String order){ Msg msg = new Msg(true); PageInfo pageInfo = new PageInfo(pageIndex, pageSize,sort,order); Map condition = new HashMap<>(16); if (StringUtils.isNotBlank(name)) { condition.put("name", name); } if (StringUtils.isNotBlank(beginDate)) { condition.put("beginDate", beginDate); } if (StringUtils.isNotBlank(endDate)) { condition.put("endDate", endDate); } if (StringUtils.isNotBlank(type)) { condition.put("type", type); } if (StringUtils.isNotBlank(province)) { condition.put("province", province); } if (StringUtils.isNotBlank(city)) { condition.put("city", city); } if (StringUtils.isNotBlank(area)) { condition.put("district", area); } if (StringUtils.isNotBlank(town)) { condition.put("town", town); } if (StringUtils.isNotBlank(community)) { condition.put("community", community); } UserInfo userInfo = userService.getById(getUser().getId()); assert userInfo != null; if (userInfo.getCompanynumber() != null){ condition.put("operator",userInfo.getCompanynumber()); List subs = enterpriseService.selectSubEnterprise(userInfo.getCompanyid()); List subList = subs.stream().map(Enterprise::getEnterprisenumber).collect(Collectors.toList()); if (subList.size() > 0) condition.put("subList", subList); } //根据用户省市区权限添加/修改查询条件 if (userInfo.getCompanyid() == null && userInfo.getType() == 3){ boolean provinceNull = StringUtils.isBlank(userInfo.getProvince()); boolean cityNull = !provinceNull && StringUtils.isBlank(userInfo.getCity()) ; boolean districtNull = !provinceNull && StringUtils.isNotBlank(userInfo.getCity()) && StringUtils.isBlank(userInfo.getArea()); boolean streetNull = !provinceNull && StringUtils.isNotBlank(userInfo.getCity()) && StringUtils.isNotBlank(userInfo.getArea()) && StringUtils.isBlank(userInfo.getTown()); boolean committeeNull = !provinceNull && StringUtils.isNotBlank(userInfo.getCity()) && StringUtils.isNotBlank(userInfo.getArea()) && StringUtils.isNotBlank(userInfo.getTown()) && StringUtils.isBlank(userInfo.getCommunity()); if (cityNull){ condition.put("province", userInfo.getProvince()); }else if (districtNull){ condition.put("province", userInfo.getProvince()); condition.put("city", userInfo.getCity()); }else if (streetNull){ condition.put("province", userInfo.getProvince()); condition.put("city", userInfo.getCity()); condition.put("district", userInfo.getArea()); }else if (committeeNull){ condition.put("province", userInfo.getProvince()); condition.put("city", userInfo.getCity()); condition.put("district", userInfo.getArea()); condition.put("street", userInfo.getTown()); }else { condition.put("province", userInfo.getProvince()); condition.put("city", userInfo.getCity()); condition.put("district", userInfo.getArea()); condition.put("street", userInfo.getTown()); condition.put("committee", userInfo.getCommunity()); } } pageInfo.setCondition(condition); PageInfoExtension extension = stockService.selectEnterpriseSaleDataGrid(pageInfo); msg.setResult(extension); return msg; } @GetMapping("/saleInfo") public Msg getSaleInfo(@RequestParam(value = "name", required = false) String name, @RequestParam(value = "directionCode", required = false) String directionCode, @RequestParam(value = "manufacturer", required = false) String manufacturer, @RequestParam(value = "type", required = false) String type, @RequestParam(value = "enterpriseNumber", required = false) String companyNumber, @RequestParam(value = "beginDate") String beginDate, @RequestParam(value = "endDate") String endDate, @RequestParam(defaultValue = "0") Integer pageIndex, @RequestParam(defaultValue = "10") Integer pageSize, String sort, String order){ Msg msg = new Msg(true); PageInfo pageInfo = new PageInfo(pageIndex, pageSize,sort,order); Map condition = new HashMap<>(8); if (StringUtils.isNotBlank(name)) { condition.put("name", name); } if (StringUtils.isNotBlank(directionCode)) { condition.put("directionCode", directionCode); } if (StringUtils.isNotBlank(manufacturer)) { condition.put("manufacturer", manufacturer); } if (StringUtils.isNotBlank(type)) { condition.put("type", type); } if (StringUtils.isNotBlank(companyNumber)) { condition.put("companyNumber", companyNumber); } condition.put("beginDate",beginDate); condition.put("endDate",endDate); pageInfo.setCondition(condition); stockService.selectSaleDetailDataGrid(pageInfo); msg.setResult(pageInfo); return msg; } @PostMapping("/refreshStock") public Msg refreshStock(){ Msg msg = new Msg(true); stockService.saveOrUpdateCurrentStock(getUser().getUsername()); return msg; } @PostMapping("/clearStock") public Msg clearStock(@RequestBody JSONObject object){ String owners = object.getString("owners"); UserInfo userInfo = userService.getById(getUser().getId()); if (userInfo.getType() != 1){ return new Msg(ERROR_70001); } if (StringUtils.isBlank(owners)){ return new Msg(ERROR_10001); } List list = StringUtils.toList(owners); for (String owner : list){ Enterprise enterprise = enterpriseService.getById(owner); if (enterprise == null){ return new Msg(ERROR_50001); } boolean flag = stockService.clearStock(enterprise); } return success(); } @PostMapping("/clearStockByItem") public Msg clearStockByItem(@RequestBody JSONObject object){ String owner = object.getString("owner"); String directionCodes = object.getString("directionCodes"); UserInfo userInfo = userService.getById(getUser().getId()); if (userInfo.getType() != 1){ return new Msg(ERROR_70001); } if (StringUtils.isBlank(owner) || StringUtils.isBlank(directionCodes)){ return new Msg(ERROR_10001); } List list = StringUtils.toList(directionCodes); Enterprise enterprise = enterpriseService.getById(owner); if (enterprise == null){ return new Msg(ERROR_50001); } boolean flag = stockService.clearStockByItems(enterprise,list); return success(); } }