Bladeren bron

AdminTrade and AdminWine

Newspaper 1 jaar geleden
bovenliggende
commit
0306b5737f

+ 11 - 0
src/main/java/com/huimv/wine/entity/Operation.java

@@ -62,4 +62,15 @@ public class Operation implements Serializable {
     private String describe;
 
 
+    public Operation(Integer userType, String userId, Integer opType, Integer level, String describe) {
+        this.userType = userType;
+        this.userId = userId;
+        this.opType = opType;
+        this.level = level;
+        this.describe = describe;
+    }
+
+    public Operation() {
+
+    }
 }

+ 9 - 0
src/main/java/com/huimv/wine/entity/vo/AdminTradeQueryTradeParam.java

@@ -0,0 +1,9 @@
+package com.huimv.wine.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class AdminTradeQueryTradeParam {
+    private String cond,uid;
+    private Integer page,limit;
+}

+ 9 - 0
src/main/java/com/huimv/wine/entity/vo/AdminTradeQueryUserParam.java

@@ -0,0 +1,9 @@
+package com.huimv.wine.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class AdminTradeQueryUserParam {
+    private String id;
+    private Integer vip,page,limit;
+}

+ 9 - 0
src/main/java/com/huimv/wine/entity/vo/AdminTradeRefundParam.java

@@ -0,0 +1,9 @@
+package com.huimv.wine.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class AdminTradeRefundParam {
+    private String tid,reason;
+    private Integer cash;
+}

+ 9 - 0
src/main/java/com/huimv/wine/entity/vo/AdminWineHistoryQueryOrderParam.java

@@ -0,0 +1,9 @@
+package com.huimv.wine.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class AdminWineHistoryQueryOrderParam {
+    private String worker,cond;
+    private Integer status,page,limit;
+}

+ 9 - 0
src/main/java/com/huimv/wine/entity/vo/AdminWineHistoryQueryWorkerParam.java

@@ -0,0 +1,9 @@
+package com.huimv.wine.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class AdminWineHistoryQueryWorkerParam {
+    private String cond;
+    private Integer page,limit;
+}

+ 9 - 0
src/main/java/com/huimv/wine/entity/vo/AdminWineHistoryUpdateParam.java

@@ -0,0 +1,9 @@
+package com.huimv.wine.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class AdminWineHistoryUpdateParam {
+    private Integer id;
+    private WineWithIdRemainVo[] now;
+}

+ 12 - 0
src/main/java/com/huimv/wine/entity/vo/WorkerQueryForHistoryResult.java

@@ -0,0 +1,12 @@
+package com.huimv.wine.entity.vo;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class WorkerQueryForHistoryResult {
+    private String id,name,phone;
+    private Integer count,todo,avg,max;
+    private LocalDateTime last;
+}

+ 4 - 0
src/main/java/com/huimv/wine/mapper/ChangeMapper.java

@@ -1,5 +1,6 @@
 package com.huimv.wine.mapper;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.huimv.wine.entity.Change;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.huimv.wine.entity.vo.QueryAdminVo;
@@ -18,7 +19,10 @@ import com.huimv.wine.entity.vo.ChangeQueryResult;
 public interface ChangeMapper extends BaseMapper<Change> {
 
     ChangeQueryResult changeDetail(Integer id);
+
     List<QueryAdminVo> changeQueryWorker(String id);
 
     List<QueryAdminVo> changeQueryWorker2(String id,Integer days,String type);
+
+    Page<ChangeQueryResult> changesQuery(Page<ChangeQueryResult> page, String managerId, String workerId, String like, Integer status);
 }

+ 2 - 0
src/main/java/com/huimv/wine/mapper/UserMapper.java

@@ -1,5 +1,6 @@
 package com.huimv.wine.mapper;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.huimv.wine.entity.User;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
@@ -13,4 +14,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface UserMapper extends BaseMapper<User> {
 
+    Page<User> userQueryForAdmin(Page<User> page, String managerId, String like, Integer vip);
 }

+ 3 - 4
src/main/java/com/huimv/wine/mapper/WorkerMapper.java

@@ -3,10 +3,7 @@ package com.huimv.wine.mapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.huimv.wine.entity.Worker;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.huimv.wine.entity.vo.RankAdminsVo;
-import com.huimv.wine.entity.vo.WorkerQueryResult;
-import com.huimv.wine.entity.vo.WorkerWithIdPhoneName;
-import com.huimv.wine.entity.vo.workQueryResVo;
+import com.huimv.wine.entity.vo.*;
 
 import java.util.List;
 
@@ -31,4 +28,6 @@ public interface WorkerMapper extends BaseMapper<Worker> {
     Page<workQueryResVo> WorkerQuery2(Page<workQueryResVo> page,String manager,String cond);
 
     List<WorkerWithIdPhoneName> WorkersQueryByPhoneOrName(String managerId,String like);
+
+    Page<WorkerQueryForHistoryResult> workerQueryForHistory(Page<WorkerQueryForHistoryResult> page, String managerId, String like);
 }

+ 11 - 1
src/main/java/com/huimv/wine/utils/Utils.java

@@ -21,5 +21,15 @@ public class Utils {
             builder.append(randomChar);  
         }  
         return builder.toString();  
-    }  
+    }
+
+    public static String randomString() {
+        Random random = new Random();
+        StringBuilder builder = new StringBuilder();
+        for (int i=0; i<6; i++)
+        {
+            builder.append(random.nextInt(10));
+        }
+        return builder.toString();
+    }
 }

+ 3 - 0
src/main/java/com/huimv/wine/ws/ManagerController.java

@@ -12,6 +12,7 @@ import com.huimv.wine.mapper.DeviceMapper;
 import com.huimv.wine.mapper.ManagerMapper;
 import com.huimv.wine.mapper.WorkerMapper;
 import com.huimv.wine.utils.*;
+import com.huimv.wine.ws.admin.AdminTrade;
 import com.huimv.wine.ws.admin.AdminWine;
 import com.huimv.wine.ws.su.SuperDashboard;
 import com.huimv.wine.ws.su.SuperOrder;
@@ -121,6 +122,8 @@ public class ManagerController extends TextWebSocketHandler {
             } else if (event.startsWith("adminDashboard")) {
             } else if (event.startsWith("adminWorker")) {
             } else if (event.startsWith("adminTrade")) {
+                AdminTrade adminTrade = SpringContextUtil.getBean(AdminTrade.class);
+                adminTrade.handle(jsonObject, session, manager);
             } else if (event.startsWith("adminWine")) {
                 AdminWine adminWine = SpringContextUtil.getBean(AdminWine.class);
                 adminWine.handle(jsonObject, session, manager);

+ 57 - 0
src/main/java/com/huimv/wine/ws/admin/AdminTrade.java

@@ -0,0 +1,57 @@
+package com.huimv.wine.ws.admin;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.wine.common.EventWsErrUtil;
+import com.huimv.wine.entity.Manager;
+import com.huimv.wine.entity.User;
+import com.huimv.wine.entity.vo.AdminTradeQueryUserParam;
+import com.huimv.wine.entity.vo.WsEvent;
+import com.huimv.wine.mapper.UserMapper;
+import com.huimv.wine.utils.Result;
+import com.huimv.wine.utils.SpringContextUtil;
+import com.huimv.wine.utils.WebsocketManagerUtil;
+import org.springframework.stereotype.Component;
+
+import javax.websocket.Session;
+
+@Component
+public class AdminTrade {
+    public void handle(JSONObject message, Session session, Manager manager){
+        String event = message.getString("event");
+        JSONObject data = message.getJSONObject("data");
+        UserMapper userMapper = SpringContextUtil.getBean(UserMapper.class);
+        switch (event) {
+            case "adminTradeQueryUser":
+                queryUser(session, manager, data, userMapper);
+                break;
+            case "adminTradeQueryTrade":
+                queryTrade(session, data);
+                break;
+            case "adminTradeRefund":
+                refund(session, manager, data);
+                break;
+            default:
+                WsEvent wsEvent = EventWsErrUtil.getWsErr("unrecognized event");
+                WebsocketManagerUtil.sendMessage(session, wsEvent);
+                break;
+        }
+    }
+
+    private void queryUser(Session session, Manager manager, JSONObject data, UserMapper userMapper) {
+        AdminTradeQueryUserParam queryUserParam = JSONObject.toJavaObject(data, AdminTradeQueryUserParam.class);
+        Page<User> page = new Page<>(queryUserParam.getPage(),queryUserParam.getLimit());
+        String like = "%" + queryUserParam.getId() + "%";
+        Page<User> userPage = userMapper.userQueryForAdmin(page,manager.getId(),like,queryUserParam.getVip());
+
+        WsEvent wsEvent = new WsEvent("adminTradeQueryUserRes", Result.success(userPage));
+        WebsocketManagerUtil.sendMessage(session,wsEvent);
+    }
+
+    private void queryTrade(Session session, JSONObject data) {
+
+    }
+
+    private void refund(Session session, Manager manager, JSONObject data) {
+    }
+}

+ 228 - 36
src/main/java/com/huimv/wine/ws/admin/AdminWine.java

@@ -6,22 +6,22 @@ import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONPObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.huimv.wine.common.EventWsErrUtil;
-import com.huimv.wine.entity.Manager;
-import com.huimv.wine.entity.Warn;
+import com.huimv.wine.entity.*;
 import com.huimv.wine.entity.vo.*;
-import com.huimv.wine.mapper.WarnMapper;
-import com.huimv.wine.mapper.WineMapper;
-import com.huimv.wine.mapper.WorkerMapper;
-import com.huimv.wine.utils.Result;
-import com.huimv.wine.utils.SpringContextUtil;
-import com.huimv.wine.utils.WebsocketManagerUtil;
-import com.huimv.wine.utils.WebsocketWorkerUtil;
+import com.huimv.wine.mapper.*;
+import com.huimv.wine.utils.*;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Component;
 
 import javax.websocket.Session;
+import java.time.Duration;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
 
 @Component
 public class AdminWine {
@@ -29,33 +29,40 @@ public class AdminWine {
     public void handle(JSONObject message, Session session, Manager manager) {
         String event = message.getString("event");
         JSONObject data = message.getJSONObject("data");
+        WarnMapper warnMapper = SpringContextUtil.getBean(WarnMapper.class);
+        WorkerMapper workerMapper = SpringContextUtil.getBean(WorkerMapper.class);
+        ChangeMapper changeMapper = SpringContextUtil.getBean(ChangeMapper.class);
+        OperationMapper operationMapper = SpringContextUtil.getBean(OperationMapper.class);
+        WineMapper wineMapper = SpringContextUtil.getBean(WineMapper.class);
+        RedisTemplate redisTemplate = SpringContextUtil.getBean(RedisTemplate.class);
+
         switch (event) {
             case "adminWineChangeQuery":
-                query(session, manager, data);
+                query(session, manager, data,warnMapper);
                 break;
             case "adminWineChangeQueryWine":
-                queryWine(session, message.getString("data"));
+                queryWine(session, message.getString("data"),wineMapper);
                 break;
             case "adminWineChangeQueryWorker":
-                queryWorker(session, manager, message.getString("data"));
+                queryWorker(session, manager, message.getString("data"),workerMapper);
                 break;
             case "adminWineChangeAssign":
-                assign(session, manager, data);
+                assign(session, manager, data,warnMapper,workerMapper,changeMapper,operationMapper);
                 break;
             case "adminWineDeviceFix":
-                deviceFix(session, manager, data);
+                deviceFix(session, manager, message.getString("data"),operationMapper,redisTemplate);
                 break;
             case "adminWineHistoryQueryWorker":
-                historyQueryWorker(session, manager, data);
+                historyQueryWorker(session, manager, data,workerMapper);
                 break;
             case "adminWineHistoryQueryOrder":
-                queryOrder(session, manager, data);
+                queryOrder(session, manager, data,changeMapper);
                 break;
             case "adminWineHistoryOrderUpdate":
-                orderUpdate(session, data);
+                orderUpdate(session, data, changeMapper, operationMapper);
                 break;
             case "adminWineHistoryOrderDelete":
-                orderDelete(session, data);
+                orderDelete(session, message.getInteger("data"),changeMapper,operationMapper,warnMapper);
                 break;
             default:
                 WsEvent wsEvent = EventWsErrUtil.getWsErr("unrecognized event");
@@ -64,8 +71,7 @@ public class AdminWine {
         }
     }
 
-    private void query(Session session, Manager manager, JSONObject data) {
-        WarnMapper warnMapper = SpringContextUtil.getBean(WarnMapper.class);
+    private void query(Session session, Manager manager, JSONObject data, WarnMapper warnMapper) {
         AdminWineChangeQueryParam adminWineChangeQueryParam = JSONObject.toJavaObject(data,AdminWineChangeQueryParam.class);
         Page<WarnQueryResult> page = new Page<>(adminWineChangeQueryParam.getPage(),adminWineChangeQueryParam.getLimit());
         String like = "%s"+adminWineChangeQueryParam.getCond()+"%s";
@@ -91,59 +97,245 @@ public class AdminWine {
         warnQueryResultVoPage.setCountId(warnQueryResultPage.getCountId());
 
         WsEvent wsEvent = new WsEvent("adminWineChangeQueryRes",Result.success(warnQueryResultVoPage));
-        WebsocketWorkerUtil.sendMessage(session,wsEvent);
+        WebsocketManagerUtil.sendMessage(session,wsEvent);
     }
 
-    private void queryWine(Session session, String cond) {
-        WineMapper wineMapper = SpringContextUtil.getBean(WineMapper.class);
+    private void queryWine(Session session, String cond, WineMapper wineMapper) {
         String like = "%"+cond+"%s";
         List<WineWithIdNameVo> wineWithIdNameVos = wineMapper.WinesQueryByIdOrName(like);
         WsEvent wsEvent = new WsEvent("adminWineChangeQueryWineRes",Result.success(wineWithIdNameVos));
-        WebsocketWorkerUtil.sendMessage(session,wsEvent);
+        WebsocketManagerUtil.sendMessage(session,wsEvent);
     }
 
-    private void queryWorker(Session session, Manager manager, String cond) {
-        WorkerMapper workerMapper = SpringContextUtil.getBean(WorkerMapper.class);
+    private void queryWorker(Session session, Manager manager, String cond, WorkerMapper workerMapper) {
         String like = "%"+cond+"%s";
         List<WorkerWithIdPhoneName> workerWithIdPhoneNames = workerMapper.WorkersQueryByPhoneOrName(manager.getId(),like);
         WsEvent wsEvent = new WsEvent("adminWineChangeQueryWorkerRes",Result.success(workerWithIdPhoneNames));
-        WebsocketWorkerUtil.sendMessage(session,wsEvent);
+        WebsocketManagerUtil.sendMessage(session,wsEvent);
     }
 
-    private void assign(Session session, Manager manager, JSONObject data) {
-        WarnMapper warnMapper = SpringContextUtil.getBean(WarnMapper.class);
+    private void assign(Session session, Manager manager, JSONObject data, WarnMapper warnMapper, WorkerMapper workerMapper, ChangeMapper changeMapper, OperationMapper operationMapper) {
 
         AdminWineAssignParam adminWineAssignParam = JSONObject.toJavaObject(data, AdminWineAssignParam.class);
         if (ObjectUtil.isEmpty(adminWineAssignParam.getWorker())){
             WsEvent wsEvent = new WsEvent("adminWineChangeAssignRes",Result.fail("请选择上酒工"));
-            WebsocketWorkerUtil.sendMessage(session,wsEvent);
+            WebsocketManagerUtil.sendMessage(session,wsEvent);
+            return;
+        }
+        Worker worker = workerMapper.selectById(adminWineAssignParam.getWorker());
+        if (ObjectUtil.isEmpty(worker)){
+            WsEvent wsEvent = new WsEvent("adminWineChangeAssignRes",Result.fail("上酒工不存在"));
+            WebsocketManagerUtil.sendMessage(session,wsEvent);
             return;
         }
         Warn warn = warnMapper.selectById(adminWineAssignParam.getId());
         if (ObjectUtil.isEmpty(warn)){
             WsEvent wsEvent = new WsEvent("adminWineChangeAssignRes",Result.fail("报警不存在"));
-            WebsocketWorkerUtil.sendMessage(session,wsEvent);
+            WebsocketManagerUtil.sendMessage(session,wsEvent);
             return;
         }
+        WineWithIdRemainVo[] old = adminWineAssignParam.getOld();
+        WineWithIdRemainVo[] now = adminWineAssignParam.getNow();
+        Change change = new Change();
+        change.setWid(warn.getId());
+        change.setDevice(warn.getDevice());
+        change.setManager(warn.getManager());
+        change.setWorker(adminWineAssignParam.getWorker());
+        change.setCode(Utils.randomString());
+
+        change.setWine1o(old[0].getId());
+        change.setRemain1o(old[0].getRemain());
+        change.setWine2o(old[1].getId());
+        change.setRemain2o(old[1].getRemain());
+        change.setWine3o(old[2].getId());
+        change.setRemain3o(old[2].getRemain());
+        change.setWine4o(old[3].getId());
+        change.setRemain4o(old[3].getRemain());
+        change.setWine1n(now[0].getId());
+        change.setRemain1n(now[0].getRemain());
+        change.setWine2n(now[1].getId());
+        change.setRemain2n(now[1].getRemain());
+        change.setWine3n(now[2].getId());
+        change.setRemain3n(now[2].getRemain());
+        change.setWine4n(now[3].getId());
+        change.setRemain4n(now[3].getRemain());
+
+        if (changeMapper.insert(change) != 1) {
+            WsEvent wsEvent = new WsEvent("adminWineChangeAssignRes",Result.fail("安排失败 01"));
+            WebsocketManagerUtil.sendMessage(session,wsEvent);
+            return;
+        }
+
+        warn.setDeal(true);
+        if (warnMapper.updateById(warn) != 1) {
+            WsEvent wsEvent = new WsEvent("adminWineChangeAssignRes",Result.fail("安排失败 02"));
+            WebsocketManagerUtil.sendMessage(session,wsEvent);
+            return;
+        }
+
+        worker.setTodo(worker.getTodo()+1);
+        if (workerMapper.updateById(worker) != 1) {
+            WsEvent wsEvent = new WsEvent("adminWineChangeAssignRes",Result.fail("安排失败 03"));
+            WebsocketManagerUtil.sendMessage(session,wsEvent);
+            return;
+        }
+
+        WsEvent wsEvent = new WsEvent("adminWineChangeAssignRes",Result.success(null));
+        WebsocketManagerUtil.sendMessage(session,wsEvent);
+
+        Operation operation = new Operation(0,manager.getId(),0,0,String.format("管理员[%s]安排上酒工[%s]为设备[%s]换酒",manager.getName(),worker.getName(),warn.getDevice()));
+        operationMapper.insert(operation);
     }
 
-    private void deviceFix(Session session, Manager manager, JSONObject data) {
+    private void deviceFix(Session session, Manager manager, String deviceId, OperationMapper operationMapper, RedisTemplate redisTemplate) {
+        Map<String, Session> sessionMap = WebsocketSellerUtil.getSession();
+        if (sessionMap.containsKey(deviceId)){
+            String key = "Fix_" + deviceId + "_" + manager.getId();
+            String code;
+            if (redisTemplate.hasKey(key)) {
+                code = redisTemplate.opsForValue().get(key).toString();
+                redisTemplate.expire(key,300, TimeUnit.SECONDS);
+            }else {
+                code = Utils.randomString();
+                redisTemplate.opsForValue().set(key,code, Duration.ofSeconds(300));
+            }
 
+            Session deviceSession = sessionMap.get(deviceId);
+            Map map = new HashMap();
+            map.put("type","Fixing");
+            map.put("user_type","manager");
+            map.put("user_id",manager.getId());
+            WsEvent wsDeviceEvent = new WsEvent("openGate",Result.success(map));
+            WebsocketSellerUtil.sendMessage(deviceSession,wsDeviceEvent);
+
+
+            WsEvent wsEvent = new WsEvent("adminWineDeviceFixRes",Result.success(code));
+            WebsocketManagerUtil.sendMessage(session,wsEvent);
+            Operation operation = new Operation(0,manager.getId(),0,1,String.format("管理员[%s]请求维修设备[%s]",manager.getName(),deviceId));
+            operationMapper.insert(operation);
+            return;
+        }
+        WsEvent wsEvent = new WsEvent("adminWineDeviceFixRes",Result.fail("设备离线"));
+        WebsocketManagerUtil.sendMessage(session,wsEvent);
     }
 
-    private void historyQueryWorker(Session session, Manager manager, JSONObject data) {
+    private void historyQueryWorker(Session session, Manager manager, JSONObject data, WorkerMapper workerMapper) {
+        AdminWineHistoryQueryWorkerParam queryWorkerParam = JSONObject.toJavaObject(data, AdminWineHistoryQueryWorkerParam.class);
+        Page<WorkerQueryForHistoryResult> page = new Page<>(queryWorkerParam.getPage(),queryWorkerParam.getLimit());
+        String like = "%" + queryWorkerParam.getCond() + "%";
+        Page<WorkerQueryForHistoryResult> resultPage = workerMapper.workerQueryForHistory(page,manager.getId(),like);
 
+        WsEvent wsEvent = new WsEvent("adminWineHistoryQueryWorkerRes",Result.success(resultPage));
+        WebsocketManagerUtil.sendMessage(session,wsEvent);
     }
 
-    private void queryOrder(Session session, Manager manager, JSONObject data) {
+    private void queryOrder(Session session, Manager manager, JSONObject data, ChangeMapper changeMapper) {
+        AdminWineHistoryQueryOrderParam queryOrderParam = JSONObject.toJavaObject(data, AdminWineHistoryQueryOrderParam.class);
+        Page<ChangeQueryResult> page = new Page<>(queryOrderParam.getPage(),queryOrderParam.getLimit());
+        Page<ChangeQueryResult> queryResultPage = changeMapper.changesQuery(page,manager.getId(),queryOrderParam.getWorker(),queryOrderParam.getCond(),queryOrderParam.getStatus());
+        Page<ChangeQueryResultVo> changeQueryResultVoPage = new Page<>();
+        List changeQueryResultVoList = new ArrayList<>();
+        for (ChangeQueryResult record : queryResultPage.getRecords()) {
+            ChangeQueryResultVo changeQueryResultVo = new ChangeQueryResultVo();
+            BeanUtil.copyProperties(record,changeQueryResultVo);
+            List<WineWithIdNameRemainVo> old = new ArrayList();
+            List<WineWithIdNameRemainVo> now = new ArrayList();
+
+            old.add(createWineWithIdNameRemain(record.getW1id(),record.getW1name(),record.getW1remain()));
+            old.add(createWineWithIdNameRemain(record.getW2id(),record.getW2name(),record.getW2remain()));
+            old.add(createWineWithIdNameRemain(record.getW3id(),record.getW3name(),record.getW3remain()));
+            old.add(createWineWithIdNameRemain(record.getW4id(),record.getW4name(),record.getW4remain()));
 
+            now.add(createWineWithIdNameRemain(record.getW5id(),record.getW5name(),record.getW5remain()));
+            now.add(createWineWithIdNameRemain(record.getW6id(),record.getW6name(),record.getW6remain()));
+            now.add(createWineWithIdNameRemain(record.getW7id(),record.getW7name(),record.getW7remain()));
+            now.add(createWineWithIdNameRemain(record.getW8id(),record.getW8name(),record.getW8remain()));
+
+            changeQueryResultVo.setOld(old);
+            changeQueryResultVo.setNow(now);
+            changeQueryResultVoList.add(changeQueryResultVo);
+        }
+        changeQueryResultVoPage.setRecords(changeQueryResultVoList);
+        changeQueryResultVoPage.setCurrent(queryResultPage.getCurrent());
+        changeQueryResultVoPage.setTotal(queryResultPage.getTotal());
+        changeQueryResultVoPage.setCountId(queryResultPage.getCountId());
+
+        WsEvent wsEvent = new WsEvent("adminWineHistoryQueryOrderRes",Result.success(changeQueryResultVoPage));
+        WebsocketManagerUtil.sendMessage(session,wsEvent);
     }
 
-    private void orderUpdate(Session session, JSONObject data) {
+    private void orderUpdate(Session session, JSONObject data, ChangeMapper changeMapper, OperationMapper operationMapper) {
+        AdminWineHistoryUpdateParam historyUpdateParam = JSONObject.toJavaObject(data, AdminWineHistoryUpdateParam.class);
+        Change change = changeMapper.selectById(historyUpdateParam.getId());
+        if (ObjectUtil.isEmpty(change)){
+            WsEvent wsEvent = new WsEvent("adminWineHistoryOrderUpdateRes",Result.fail("订单不存在"));
+            WebsocketManagerUtil.sendMessage(session,wsEvent);
+            return;
+        }
+        if (change.getStatus() != 0){
+            WsEvent wsEvent = new WsEvent("adminWineHistoryOrderUpdateRes",Result.fail("订单不可修改"));
+            WebsocketManagerUtil.sendMessage(session,wsEvent);
+            return;
+        }
+        WineWithIdRemainVo[] now = historyUpdateParam.getNow();
+        change.setWine1n(now[0].getId());
+        change.setRemain1n(now[0].getRemain());
+        change.setWine2n(now[1].getId());
+        change.setRemain2n(now[1].getRemain());
+        change.setWine3n(now[2].getId());
+        change.setRemain3n(now[2].getRemain());
+        change.setWine4n(now[3].getId());
+        change.setRemain4n(now[3].getRemain());
+        change.setPublish(LocalDateTime.now());
+
+        if (changeMapper.updateById(change) != 1) {
+            WsEvent wsEvent = new WsEvent("adminWineHistoryOrderUpdateRes",Result.fail("更新失败"));
+            WebsocketManagerUtil.sendMessage(session,wsEvent);
+            return;
+        }
+
+        WsEvent wsEvent = new WsEvent("adminWineHistoryOrderUpdateRes",Result.success(null));
+        WebsocketManagerUtil.sendMessage(session,wsEvent);
 
+        Operation operation = new Operation(0,change.getManager(),1,0,"修改上酒订单信息");
+        operationMapper.insert(operation);
     }
 
-    private void orderDelete(Session session, JSONObject data) {
+    private void orderDelete(Session session, Integer id, ChangeMapper changeMapper, OperationMapper operationMapper, WarnMapper warnMapper) {
+        Change change = changeMapper.selectById(id);
+        if (ObjectUtil.isEmpty(change)){
+            WsEvent wsEvent = new WsEvent("adminWineHistoryOrderDeleteRes",Result.fail("订单不存在"));
+            WebsocketManagerUtil.sendMessage(session,wsEvent);
+            return;
+        }
+        if (change.getStatus() != 0){
+            WsEvent wsEvent = new WsEvent("adminWineHistoryOrderDeleteRes",Result.fail("订单不可删除"));
+            WebsocketManagerUtil.sendMessage(session,wsEvent);
+            return;
+        }
+        Warn warn = warnMapper.selectById(change.getWid());
+        if (ObjectUtil.isEmpty(warn)){
+            WsEvent wsEvent = new WsEvent("adminWineHistoryOrderDeleteRes",Result.fail("报警信息错误"));
+            WebsocketManagerUtil.sendMessage(session,wsEvent);
+            return;
+        }
+        warn.setDeal(false);
+        if (warnMapper.updateById(warn) != 1) {
+            WsEvent wsEvent = new WsEvent("adminWineHistoryOrderDeleteRes",Result.fail("重置报警信息失败"));
+            WebsocketManagerUtil.sendMessage(session,wsEvent);
+            return;
+        }
+        int delete = changeMapper.deleteById(change);
+        if (delete != 1) {
+            WsEvent wsEvent = new WsEvent("adminWineHistoryOrderDeleteRes",Result.fail("删除失败"));
+            WebsocketManagerUtil.sendMessage(session,wsEvent);
+            return;
+        }
+        WsEvent wsEvent = new WsEvent("adminWineHistoryOrderDeleteRes",Result.success("删除成功"));
+        WebsocketManagerUtil.sendMessage(session,wsEvent);
+
+        Operation operation = new Operation(0,change.getManager(),2,0,"取消上酒订单");
+        operationMapper.insert(operation);
 
     }
 

+ 48 - 28
src/main/resources/com/huimv/wine/mapper/ChangeMapper.xml

@@ -2,40 +2,44 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.huimv.wine.mapper.ChangeMapper">
 
-    <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.huimv.wine.entity.Change">
+    <resultMap id="ChangeDetailResultMap" type="com.huimv.wine.entity.vo.ChangeQueryResult">
         <id column="id" property="id" />
-        <result column="wid" property="wid" />
-        <result column="device" property="device" />
-        <result column="manager" property="manager" />
-        <result column="worker" property="worker" />
         <result column="code" property="code" />
         <result column="status" property="status" />
         <result column="publish" property="publish" />
         <result column="finish" property="finish" />
-        <result column="wine1o" property="wine1o" />
-        <result column="remain1o" property="remain1o" />
-        <result column="wine2o" property="wine2o" />
-        <result column="remain2o" property="remain2o" />
-        <result column="wine3o" property="wine3o" />
-        <result column="remain3o" property="remain3o" />
-        <result column="wine4o" property="wine4o" />
-        <result column="remain4o" property="remain4o" />
-        <result column="wine1n" property="wine1n" />
-        <result column="remain1n" property="remain1n" />
-        <result column="wine2n" property="wine2n" />
-        <result column="remain2n" property="remain2n" />
-        <result column="wine3n" property="wine3n" />
-        <result column="remain3n" property="remain3n" />
-        <result column="wine4n" property="wine4n" />
-        <result column="remain4n" property="remain4n" />
+        <result column="w1id" property="code" />
+        <result column="w1name" property="w1name" />
+        <result column="w1remain" property="w1remain" />
+        <result column="w2id" property="w2id" />
+        <result column="w2name" property="w2name" />
+        <result column="w2remain" property="w2remain" />
+        <result column="w3id" property="w3id" />
+        <result column="w3name" property="w3name" />
+        <result column="w3remain" property="w3remain" />
+        <result column="w4id" property="w4id" />
+        <result column="w4name" property="w4name" />
+        <result column="w4remain" property="w4remain" />
+        <result column="w5id" property="w5id" />
+        <result column="w5name" property="w5name" />
+        <result column="w5remain" property="w5remain" />
+        <result column="w6id" property="w6id" />
+        <result column="w6name" property="w6name" />
+        <result column="w6remain" property="w6remain" />
+        <result column="w7id" property="w7id" />
+        <result column="w7name" property="w7name" />
+        <result column="w7remain" property="w7remain" />
+        <result column="w8id" property="w8id" />
+        <result column="w8name" property="w8name" />
+        <result column="w8remain" property="w8remain" />
+        <association property="device" javaType="com.huimv.wine.entity.vo.DeviceWithIdAddrVo" select="com.huimv.wine.mapper.DeviceMapper.getDeviceByDeviceId" column="deviceId"></association>
     </resultMap>
-    <select id="changeDetail" resultType="com.huimv.wine.entity.vo.ChangeQueryResult">
-        SELECT c.`id`,d.`id`,d.`addr`,c.`code`,c.`status`,c.`publish`,c.`finish`,w1.`id`,
-        w1.`name`,c.`remain1o`,w2.`id`,w2.`name`,c.`remain2o`,
-        w3.`id`,w3.`name`,c.`remain3o`,w4.`id`,w4.`name`,c.`remain4o`,
-        w5.`id`,w5.`name`,c.`remain1n`,w6.`id`,w6.`name`,c.`remain2n`,
-        w7.`id`,w7.`name`,c.`remain3n`,w8.`id`,w8.`name`,c.`remain4n`
+    <select id="changeDetail" resultMap="ChangeDetailResultMap">
+        SELECT c.`id` as 'id',d.`id` as 'deviceId',c.`code` as 'code',c.`status` as 'status',c.`publish` as 'publish',c.`finish` as 'finish',
+        w1.`id` as 'w1id',w1.`name` as 'w1name',c.`remain1o` as 'w1remain',w2.`id` as 'w2id',w2.`name` as 'w2name',c.`remain2o` as 'w2remain',
+        w3.`id` as 'w3id',w3.`name` as 'w3name',c.`remain3o` as 'w3remain',w4.`id` as 'w4id',w4.`name` as 'w4name',c.`remain4o` as 'w4remain',
+        w5.`id` as 'w5id',w5.`name` as 'w5name',c.`remain1n` as 'w5remain',w6.`id` as 'w6id',w6.`name` as 'w6name',c.`remain2n` as 'w6remain',
+        w7.`id` as 'w7id',w7.`name` as 'w7name',c.`remain3n` as 'w7remain',w8.`id` as 'w8id',w8.`name` as 'w8name',c.`remain4n` as 'w8remain'
         FROM `change` AS c LEFT JOIN `device` AS d ON c.`device`=d.`id`
         INNER JOIN `wine` AS w1 ON w1.`id`=c.`wine1o` INNER JOIN `wine` AS w2 ON w2.`id`=c.`wine2o`
         INNER JOIN `wine` AS w3 ON w3.`id`=c.`wine3o` INNER JOIN `wine` AS w4 ON w4.`id`=c.`wine4o`
@@ -52,4 +56,20 @@
         SELECT DATE_FORMAT(`finish`,#{type}) as 'time',COUNT('time') as 'total' FROM `change` WHERE `status`=2 AND `worker`=#{id} AND (`finish` BETWEEN
         DATE_SUB(CURRENT_TIMESTAMP,INTERVAL #{days} DAY) AND CURRENT_TIMESTAMP) GROUP BY 'time'
     </select>
+    <select id="changesQuery" resultMap="ChangeDetailResultMap">
+        SELECT c.`id` as 'id',d.`id` as 'deviceId',c.`code` as 'code',c.`status` as 'status',c.`publish` as 'publish',c.`finish` as 'finish',
+        w1.`id` as 'w1id',w1.`name` as 'w1name',c.`remain1o` as 'w1remain',w2.`id` as 'w2id',w2.`name` as 'w2name',c.`remain2o` as 'w2remain',
+        w3.`id` as 'w3id',w3.`name` as 'w3name',c.`remain3o` as 'w3remain',w4.`id` as 'w4id',w4.`name` as 'w4name',c.`remain4o` as 'w4remain',
+        w5.`id` as 'w5id',w5.`name` as 'w5name',c.`remain1n` as 'w5remain',w6.`id` as 'w6id',w6.`name` as 'w6name',c.`remain2n` as 'w6remain',
+        w7.`id` as 'w7id',w7.`name` as 'w7name',c.`remain3n` as 'w7remain',w8.`id` as 'w8id',w8.`name` as 'w8name',c.`remain4n` as 'w8remain'
+        FROM `change` AS c LEFT JOIN `device` AS d ON c.`device`=d.`id`
+        INNER JOIN `wine` AS w1 ON w1.`id`=c.`wine1o` INNER JOIN `wine` AS w2 ON w2.`id`=c.`wine2o`
+        INNER JOIN `wine` AS w3 ON w3.`id`=c.`wine3o` INNER JOIN `wine` AS w4 ON w4.`id`=c.`wine4o`
+        INNER JOIN `wine` AS w5 ON w5.`id`=c.`wine1n` INNER JOIN `wine` AS w6 ON w6.`id`=c.`wine2n`
+        INNER JOIN `wine` AS w7 ON w7.`id`=c.`wine3n` INNER JOIN `wine` AS w8 ON w8.`id`=c.`wine4n`
+        WHERE c.`manager`= #{managerId} AND c.`worker`= #{workerId} AND (d.`id` LIKE #{like} OR d.`addr` LIKE #{like})
+        <if test="status != -1">
+            AND c.`status`= #{status}
+        </if>
+    </select>
 </mapper>

+ 7 - 0
src/main/resources/com/huimv/wine/mapper/UserMapper.xml

@@ -15,5 +15,12 @@
         <result column="refund_count" property="refundCount" />
         <result column="refund_cost" property="refundCost" />
     </resultMap>
+    <select id="userQueryForAdmin" resultType="com.huimv.wine.entity.User">
+        SELECT u.`id`,u.`first`,u.`last`,u.`vip`,u.`cash`,u.`max_cost`,u.`buy_count`,u.`buy_cost`,
+        u.`refund_count`,u.`refund_cost` FROM `user` AS u WHERE u.`id` LIKE #{like} AND u.`id` IN (SELECT DISTINCT t.`payer` FROM `trade` AS t WHERE t.`manager`= #{managerId})
+        <if test="vip != -1">
+            AND u.`vip`= #{vip}
+        </if>
+    </select>
 
 </mapper>

+ 3 - 0
src/main/resources/com/huimv/wine/mapper/WorkerMapper.xml

@@ -51,4 +51,7 @@
     <select id="WorkersQueryByPhoneOrName" resultType="com.huimv.wine.entity.vo.WorkerWithIdPhoneName">
         SELECT `id`,`phone`,`name` FROM `worker` WHERE `manager`= #{managerId} AND (`phone` LIKE #{like} OR `name` LIKE #{like}) LIMIT 10;
     </select>
+    <select id="workerQueryForHistory" resultType="com.huimv.wine.entity.vo.WorkerQueryForHistoryResult">
+        SELECT `id`,`last`,`name`,`phone`,`count`,`todo`,`avg_cost` as 'avg',`max_cost` as 'max' FROM `worker` WHERE `manager`= #{managerId} AND (`name` LIKE #{like} OR `phone` LIKE #{like});
+    </select>
 </mapper>