From 59e91a4e9ddaf23cebb12993c774aa899ab22d16 Mon Sep 17 00:00:00 2001
From: 郑永安 <zyazyz250@sina.com>
Date: Mon, 19 Jun 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