package com.szwl.controller;
import cn.com.crbank.ommo.bean.ResultMessage;
import cn.com.crbank.ommo.esUtil.BeanUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.szwl.model.bean.TEquipmentDTO;
import com.szwl.model.bo.R;
import com.szwl.model.bo.ResponseModel;
import com.szwl.model.entity.*;
import com.szwl.model.utils.PushUtils;
import com.szwl.service.*;
import com.szwl.service.es.EsTEquipmentService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
/**
*
* 设备连接申请表 前端控制器
*
*
* @author wuhs
* @since 2022-04-21
*/
@RestController
@Api(value = "/tEquipmentApply", tags = {"设备连接申请表"})
@RequestMapping("/tEquipmentApply")
public class TEquipmentApplyController {
@Autowired
TAdminService adminService;
@Autowired
TEquipmentApplyService equipmentApplyService;
@Autowired
TEquipmentService equipmentService;
@Autowired
TProductService productService;
@Autowired
TEquipmentDescService equipmentDescService;
@Autowired
EsTEquipmentService esTEquipmentService;
@ApiOperation(value = "查找机器审核列表")
@GetMapping("/pageTEquipmentApply")
public ResponseModel> pageTEquipmentApply(String clientId, String userName,String managerId,String type, long current, long size ) {
LambdaQueryWrapper query = Wrappers.lambdaQuery();
if(StringUtils.isNotEmpty(clientId)){
query.like(TEquipmentApply::getClientId,clientId);
}
if(StringUtils.isNotEmpty(userName)){
LambdaQueryWrapper adminQuery = Wrappers.lambdaQuery();
adminQuery.eq(TAdmin::getUsername,userName);
List list = adminService.list(adminQuery);
if(list.size()>0){
query.eq(TEquipmentApply::getAdminId,list.get(0).getId());
}
}
if(StringUtils.isNotEmpty(type)){
query.eq(TEquipmentApply::getType,type);
}
if(StringUtils.isNotEmpty(managerId)){
query.like(TEquipmentApply::getManagerId,managerId);
}
Page page = new Page<>(current, size, true);
IPage iPage = equipmentApplyService.page(page, query);
return R.ok(iPage);
}
/**
* 更新申请状态
*/
@ApiOperation(value = "更新申请状态")
@GetMapping("/changeStatus")
public ResponseModel> changeStatus(Long id, String status) {
if (null != id) {
TEquipmentApply equipmentApply = equipmentApplyService.getById(id);
if (equipmentApply != null) {
if (!StringUtils.isEmpty(status)) {
if (status.equals("agreed")) {
String clientId = equipmentApply.getClientId();
//判断是否设备初始化
Long adminId = equipmentApply.getAdminId();
String adminLevel = equipmentApply.getAdminLevel();
String adminUserName = equipmentApply.getAdminUserName();
Integer type = equipmentApply.getType();
String gtClientId = equipmentApply.getGtClientId();
String equimentType = equipmentApply.getEquimentType();
String old = "";
// ArrayList filters = new ArrayList<>();
// filters.add(Filter.eq("clientId", clientId + "xxx"));
// List list = equipmentService.findList(null, filters, null);
LambdaQueryWrapper query = Wrappers.lambdaQuery();
query.like(TEquipment::getClientId,clientId+"xxx");
List list = equipmentService.list(query);
equipmentApply.setStatusType(3);
if (list.size() > 0) {
//表示设备第二次申请了:主要为了区分脱离以及初始化
old = "1";
//重新修改设备名称
TEquipment equipment = list.get(0);
equipment.setClientId(clientId);
equipment.setGtClientId(gtClientId);
equipment.setAdminId(adminId);
equipment.setAdminLevel(adminLevel);
equipment.setAdminUserName(adminUserName);
equipment.setType(type);
if(equipmentApply.getEquimentType().equals("MG320-1")){
if(!equipmentApply.getEquimentType().equals(equipment.getEquimentType())&&equipment.getEquimentType().equals("MG320")){
// List filter = new ArrayList<>();
// filter.add(Filter.eq("equipmentId", equipment.getId()));
// List productList = productService.findList(null, filter, null);
LambdaQueryWrapper queryProduct = Wrappers.lambdaQuery();
queryProduct.eq(TProduct::getEquipmentId,equipment.getId());
List productList = productService.list(queryProduct);
if(productList.size()==18){
//从18种变成30种花型
saveProductMG12(equipment.getId());
}
//从18种变成30种花型
// saveProductMG12(equipment.getId());
}
equipment.setEquimentType("MG320");
}
if(equipmentApply.getEquimentType().equals("MG330")){
equipment.setEquimentType("MG330");
}
equipmentService.updateById(equipment);
String data = com.alibaba.fastjson.JSON.toJSONString(equipment);
try {
esTEquipmentService.updateDataById(equipment);
}catch (Exception e) {
e.printStackTrace();
}
equipmentService.sentMessage(equipmentApply.getClientId(),PushUtils.buildJson("statusType", "agreed" + old).toString());
PushUtils.push(equipmentApply.getGtClientId(), "【棉花糖】设备初始化申请", "同意", PushUtils.buildJson("statusType", "agreed" + old).toString());
equipmentApplyService.updateById(equipmentApply);
equipmentService.sentMessage(equipmentApply.getClientId(),PushUtils.buildJson("endDate",String.valueOf(equipment.getEndDate().getTime()) ).toString());
PushUtils.push(equipmentApply.getGtClientId(), "", "", PushUtils.buildJson("endDate",String.valueOf(equipment.getEndDate().getTime()) ).toString());
return R.ok();
}
TEquipment equipment = new TEquipment();
equipment.setClientId(clientId);
equipment.setManagerId(equipmentApply.getManagerId());
equipment.setAdminId(adminId);
equipment.setAdminLevel(adminLevel);
equipment.setGtClientId(gtClientId);
equipment.setAdminUserName(adminUserName);
equipment.setIsUsing(true);
equipment.setIsNetWork(true);
equipment.setGuestPwd("123456");
equipment.setAdminPwd("123456");
equipment.setChannel("1");
equipment.setProductTotal(0);
equipment.setType(type);
//设置默认规则
equipment.setTimeRuleId(Long.valueOf(1));
if(equimentType.equals("MG320-1")){
equipment.setEquimentType("MG320");
}else {
equipment.setEquimentType(equimentType);
}
if(equipmentApply.getEquimentType().equals("MG330")){
equipment.setEquimentType("MG330");
}
if(!StringUtils.isEmpty(equimentType)&&equimentType.equals("MG280")){
Long monthBegin = getMonthBegin(new Date());
long time = new Date().getTime();
if(time query1 = Wrappers.lambdaQuery();
query1.eq(TEquipment::getClientId,clientId);
List list1 = equipmentService.list(query1);
try {
if(list1.size()>0){
TEquipment tEquipment = list1.get(0);
esTEquipmentService.insertData(tEquipment);
}
}catch (Exception e) {
e.printStackTrace();
}
TEquipmentDesc equipmentDesc = new TEquipmentDesc();
equipmentDesc.setEquipmentId(list1.get(0).getId());
equipmentDescService.save(equipmentDesc);
} else if (status.equals("rejected")) {
equipmentApply.setStatusType(2);
equipmentService.sentMessage(equipmentApply.getClientId(),PushUtils.buildJson("statusType", "rejected").toString());
PushUtils.push(equipmentApply.getGtClientId(), "【棉花糖】设备初始化申请", "拒绝", PushUtils.buildJson("statusType", "rejected").toString());
}
equipmentApplyService.updateById(equipmentApply);
}
}
}
return R.ok();
}
/**
* 添加产品
*
* @param id
*/
private void saveProduct(Long id) {
String[] str = {"玫瑰精灵-A01", "童心未泯-A02", "五彩缤纷-A03", "天雪恋舞-A04", "水中芙蓉-A05", "烈焰红唇-A06", "美梦成真-A07", "一见钟情-A08", "幽兰爱恋-A09", "心之守护-A10",
"夏日爱恋-A11", "冰美人-A12", "国色天香-A13", "赤子之心-A14", "海洋之心-A15", "水晶之恋-A16", "彩色精灵-A17", "小棉袄-A18"};
for (int i = 0; i < str.length; i++) {
TProduct product = new TProduct();
product.setEquipmentId(id);
String[] split = str[i].split("-");
product.setProductName(split[0]);
product.setNo(split[1]);
product.setRmbPrice(BigDecimal.ZERO);
product.setCodePrice(BigDecimal.ZERO);
productService.save(product);
}
}
private void saveProductMG280(Long id) {
String[] str = { "水中芙蓉-A05", "水中芙蓉mini-A31", "烈焰红唇-A06", "烈焰红唇mini-A32", "夏日爱恋-A11", "夏日爱恋mini-A33", "冰美人-A12", "冰美人mini-A34", "彩色精灵-A17", "彩色精灵mini-A35"};
for (int i = 0; i < str.length; i++) {
TProduct product = new TProduct();
product.setEquipmentId(id);
String[] split = str[i].split("-");
product.setProductName(split[0]);
product.setNo(split[1]);
product.setRmbPrice(BigDecimal.ZERO);
product.setCodePrice(BigDecimal.ZERO);
productService.save(product);
}
}
private void saveProductMG1(Long id) {
String[] str = {"玫瑰精灵-A01", "童心未泯-A02", "五彩缤纷-A03", "天雪恋舞-A04", "水中芙蓉-A05", "烈焰红唇-A06", "美梦成真-A07", "一见钟情-A08", "幽兰爱恋-A09",
"心之守护-A10", "夏日爱恋-A11", "冰美人-A12", "国色天香-A13", "赤子之心-A14", "海洋之心-A15", "水晶之恋-A16", "彩色精灵-A17", "小棉袄-A18",
"精灵蝶梦-A19","夏日倾城-A20","百花齐放-A21","蜂缠蝶恋-A22","豆蔻年华-A23","星空幻想-A24","坠入星空-A25","雪花飞舞-A26","春暖花开-A27","花飞蝶舞-A28",
"花样年华-A29","心花怒放-A30"};
for (int i = 0; i < str.length; i++) {
TProduct product = new TProduct();
product.setEquipmentId(id);
String[] split = str[i].split("-");
product.setProductName(split[0]);
product.setNo(split[1]);
product.setRmbPrice(BigDecimal.ZERO);
product.setCodePrice(BigDecimal.ZERO);
productService.save(product);
}
}
private void saveProductMG12(Long id) {
String[] str = { "精灵蝶梦-A19","夏日倾城-A20","百花齐放-A21","蜂缠蝶恋-A22","豆蔻年华-A23","星空幻想-A24"
,"坠入星空-A25","雪花飞舞-A26","春暖花开-A27","花飞蝶舞-A28","花样年华-A29","心花怒放-A30"};
for (int i = 0; i < str.length; i++) {
TProduct product = new TProduct();
product.setEquipmentId(id);
String[] split = str[i].split("-");
product.setProductName(split[0]);
product.setNo(split[1]);
product.setRmbPrice(BigDecimal.ZERO);
product.setCodePrice(BigDecimal.ZERO);
productService.save(product);
}
}
private void saveProductMG22(Long id) {
String[] str = {"玫瑰精灵-A01", "童心未泯-A02", "五彩缤纷-A03", "天雪恋舞-A04", "水中芙蓉-A05", "烈焰红唇-A06", "美梦成真-A07", "一见钟情-A08", "幽兰爱恋-A09", "心之守护-A10",
"夏日爱恋-A11", "冰美人-A12", "国色天香-A13", "赤子之心-A14", "海洋之心-A15", "水晶之恋-A16", "彩色精灵-A17", "小棉袄-A18", "精灵蝶梦-A19","蜂缠蝶恋-A22","坠入星空-A25","花飞蝶舞-A28"};
for (int i = 0; i < str.length; i++) {
TProduct product = new TProduct();
product.setEquipmentId(id);
String[] split = str[i].split("-");
product.setProductName(split[0]);
product.setNo(split[1]);
product.setRmbPrice(BigDecimal.ZERO);
product.setCodePrice(BigDecimal.ZERO);
productService.save(product);
}
}
private void saveProductMG26(Long id) {
String[] str = {"玫瑰精灵-A01", "童心未泯-A02", "五彩缤纷-A03", "天雪恋舞-A04", "水中芙蓉-A05", "烈焰红唇-A06", "美梦成真-A07", "一见钟情-A08", "幽兰爱恋-A09", "心之守护-A10",
"夏日爱恋-A11", "冰美人-A12", "国色天香-A13", "赤子之心-A14", "海洋之心-A15", "水晶之恋-A16", "彩色精灵-A17", "小棉袄-A18", "精灵蝶梦-A19","蜂缠蝶恋-A22","坠入星空-A25","花飞蝶舞-A28",
"夏日倾城-A20", "雪花飞舞-A26", "豆蔻年华-A23", "花样年华-A29"};
for (int i = 0; i < str.length; i++) {
TProduct product = new TProduct();
product.setEquipmentId(id);
String[] split = str[i].split("-");
product.setProductName(split[0]);
product.setNo(split[1]);
product.setRmbPrice(BigDecimal.ZERO);
product.setCodePrice(BigDecimal.ZERO);
productService.save(product);
}
}
/**
* 获取指定日期所在月份开始的时间戳
* @param date 指定日期
* @return
*/
public static Long getMonthBegin(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
//设置为10号,当前日期既为本月10号
c.set(Calendar.DAY_OF_MONTH, 10);
//将小时至0
c.set(Calendar.HOUR_OF_DAY, 0);
//将分钟至0
c.set(Calendar.MINUTE, 0);
//将秒至0
c.set(Calendar.SECOND,0);
//将毫秒至0
c.set(Calendar.MILLISECOND, 0);
// 获取本月第一天的时间戳
return c.getTimeInMillis();
}
public static Date nextMonthDate() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH,10);
//将小时至0
calendar.set(Calendar.HOUR_OF_DAY, 0);
//将分钟至0
calendar.set(Calendar.MINUTE, 0);
//将秒至0
calendar.set(Calendar.SECOND,0);
//将毫秒至0
calendar.set(Calendar.MILLISECOND, 0);
calendar.add(Calendar.MONTH,1);
return calendar.getTime();
}
}