From 59e91a4e9ddaf23cebb12993c774aa899ab22d16 Mon Sep 17 00:00:00 2001 From: 郑永安 <zyazyz250@sina.com> Date: 星期一, 19 六月 2023 14:22:45 +0800 Subject: [PATCH] 描述 --- src/main/java/com/gk/firework/Controller/StockController.java | 904 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 904 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/gk/firework/Controller/StockController.java b/src/main/java/com/gk/firework/Controller/StockController.java new file mode 100644 index 0000000..6ebfa4b --- /dev/null +++ b/src/main/java/com/gk/firework/Controller/StockController.java @@ -0,0 +1,904 @@ +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)){ + //一般入库 + List<String>directionCodes = StringUtils.toList(rfids); + List<ProductVo> productVos = new ArrayList<>(); + List<EntryDetailInfo>detailInfos = new ArrayList<>(); + List<ProductLocusInfo>locusInfos = 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<Msg> entryBatch(@RequestBody JSONArray jsonArray){ + List<Msg> 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<String> directionCodes = StringUtils.toList(directionCodeStr); + EntryOrderInfo orderInfo = entryService.generateEntryOrderInfo(type,userInfo,date,transport, auth); + int boxNum = 0; + List<EntryDetailInfo>detailInfos = new ArrayList<>(); + List<ProductLocusInfo>locusInfos = new ArrayList<>(); + + List<ProductVo> 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); + + List<EntryDetailInfo>detailInfos = new ArrayList<>(); + List<ProductLocusInfo>locusInfos = new ArrayList<>(); + + List<ProductVo> 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<String, Object> 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<String, Object> condition = new HashMap<>(); + UserInfo user = getUser(); + UserInfo userInfo = userService.getById(user); + condition.put("owner",userInfo.getCompanyid()); + pageInfo.setCondition(condition); + PageInfoExtension<StockTotal> 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<String, Object> 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<Enterprise> subs = enterpriseService.selectSubEnterprise(userInfo.getCompanyid()); + List<String> 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} + + List<StockVo>stockVos = 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<String, Object> 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<Map> 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<String, Object> 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<Enterprise> subs = enterpriseService.selectSubEnterprise(userInfo.getCompanyid()); + List<String> 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); + + List<StaticStock>stocks = 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<String, Object> 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<Map> 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<String, Object> 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<String, Object> 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<Enterprise> subs = enterpriseService.selectSubEnterprise(userInfo.getCompanyid()); + List<String> 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<Map> 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<String, Object> 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<String> 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<String> 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(); + } + +} -- Gitblit v1.9.2