浏览代码

系统增加优尼雅售后系统功能

xian 4 年之前
父节点
当前提交
a576871df7
共有 23 个文件被更改,包括 509 次插入193 次删除
  1. 120 0
      watero-common-tool/src/main/java/com/iamberry/url/URLUtils.java
  2. 41 4
      watero-common-tool/src/main/java/com/iamberry/wechat/tools/StrUtils.java
  3. 18 9
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/ComplaintQuestionInfo.java
  4. 17 9
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/ComplaintTypeInfo.java
  5. 32 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/fm/ComplaintDetectInfo.java
  6. 17 9
      watero-rst-core/src/main/java/com.iamberry.rst.core/fm/ComplaintSmallClassInfo.java
  7. 19 34
      watero-rst-core/src/main/java/com.iamberry.rst.core/order/Product.java
  8. 27 24
      watero-rst-core/src/main/java/com.iamberry.rst.core/pts/Produce.java
  9. 11 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/sys/Admin.java
  10. 1 1
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/SalesOrderService.java
  11. 10 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/fm/ComplaintDetectInfoService.java
  12. 1 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/ComplaintQuestionInfoServiceImpl.java
  13. 2 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java
  14. 1 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/SalesOrderMapper.java
  15. 3 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/complaintQuestionInfoMapper.xml
  16. 3 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/complaintTypeInfoMapper.xml
  17. 19 14
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/salesOrderMapper.xml
  18. 15 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/fm/ComplaintDetectInfoServiceImpl.java
  19. 9 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/fm/mapper/ComplaintDetectInfoMapper.java
  20. 132 80
      watero-rst-service/src/main/java/com/iamberry/rst/service/fm/mapper/complaintDetectInfoMapper.xml
  21. 3 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/fm/mapper/complaintSmallClassInfoMapper.xml
  22. 5 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/machineMapper.xml
  23. 3 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/produceMapper.xml

+ 120 - 0
watero-common-tool/src/main/java/com/iamberry/url/URLUtils.java

@@ -0,0 +1,120 @@
+package com.iamberry.url;
+
+import com.iamberry.wechat.tools.DateTimeUtil;
+import com.iamberry.wechat.tools.StrUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.net.URLEncoder;
+import java.util.Date;
+
+/**
+ * @author 献
+ * @company 深圳爱贝源科技有限公司
+ * @date 2017/8/16 20:23
+ * @tel 18271840547
+ * @website www.iamberry.com
+ */
+public class URLUtils {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(URLUtils.class);
+
+    /**
+     * 将对象转换成为URL类型参数
+     * @param obj
+     * @return
+     */
+    public static String getString(Object obj, int pageSize) {
+        StringBuilder builder = new StringBuilder("");
+        // 获取对象Class的所有公开方法
+        Method[] methods = obj.getClass().getDeclaredMethods();
+        for (Method method : methods) {
+            // 如果方法为get开头,则可以获取
+            String methodName = method.getName();
+            if (methodName.startsWith("get")) {
+                try {
+                    // 执行方法,获取方法返回值,如果返回值为null,则返回
+                    Object object = method.invoke(obj);
+                    if (object == null) {
+                        continue;
+                    }
+                    // 如果返回值为String,值为"",则返回
+                    if (object instanceof String) {
+                        if ("".equals(object.toString())) {
+                            continue;
+                        }
+                        builder.append(StrUtils.toLowerCase(methodName.replace("get", ""))).append("=").append(URLEncoder.encode(String.valueOf(object), "UTF-8")).append("&");
+                    } else if (object instanceof Date) {
+                        String field = StrUtils.toLowerCase(methodName.replace("get", ""));
+                        String value = getFieldValueByFieldName(field, obj);
+                        builder.append(field).append("=").append(URLEncoder.encode(value, "UTF-8")).append("&");
+                    } else if (object instanceof Integer) {
+                        builder.append(StrUtils.toLowerCase(methodName.replace("get", ""))).append("=").append(URLEncoder.encode(String.valueOf(object), "UTF-8")).append("&");
+                    } else if (object instanceof Serializable) {
+                        Method[] attrMethods = object.getClass().getDeclaredMethods();
+                        for (Method attr : attrMethods) {
+                            String attrName = attr.getName();
+                            if (attrName.startsWith("get")) {
+                                try {
+                                    Object attrObject = attr.invoke(object);
+                                    String parentName = StrUtils.toLowerCase(methodName.replace("get", "")) + ".";
+                                    if (attrObject != null) {
+                                        if (attrObject instanceof String) {
+                                            if ("".equals(attrObject.toString())) {
+                                                continue;
+                                            }
+                                            builder.append(parentName).append(StrUtils.toLowerCase(attrName.replace("get", ""))).append("=").append(URLEncoder.encode(String.valueOf(attrObject), "UTF-8")).append("&");
+                                        } else if (attrObject instanceof Date) {
+                                            String field = StrUtils.toLowerCase(attrName.replace("get", ""));
+                                            String value = getFieldValueByFieldName(field, object);
+                                            builder.append(parentName).append(field).append("=").append(URLEncoder.encode(value, "UTF-8")).append("&");
+                                        } else if (attrObject instanceof Integer) {
+                                            builder.append(parentName).append(StrUtils.toLowerCase(attrName.replace("get", ""))).append("=").append(URLEncoder.encode(String.valueOf(attrObject), "UTF-8")).append("&");
+                                        }
+                                    }
+                                } catch (Exception e) {
+                                    LOGGER.error("", e);
+                                }
+                            }
+                        }
+                    }
+                    // end
+                } catch (Exception e) {
+                    // 如果报错,表示getter方法需要参数,不是我们需要的方法
+                    LOGGER.error("", e);
+                }
+            }
+        }
+        if (builder.toString().isEmpty()) {
+            return "pageSize=" + pageSize + "&pageNO=";
+        }
+        return builder.toString().substring(0, builder.toString().length()-1) + "&pageSize=" + pageSize + "&pageNO=";
+    }
+
+
+    public static String getFieldValueByFieldName(String fieldName, Object object) {
+        try {
+            Field field = object.getClass().getDeclaredField(fieldName);
+            //设置对象的访问权限,保证对private的属性的访问
+            field.setAccessible(true);
+            Object hisValue = field.get(object);
+            if (null == hisValue) {
+                return "";
+            }
+            String format = "yyyy-MM-dd";
+            try {
+                format = field.getAnnotation(DateTimeFormat.class).pattern();
+            } catch (Exception e) {
+
+            }
+            return DateTimeUtil.format((Date) hisValue, format);
+        } catch (Exception e) {
+
+            return "";
+        }
+    }
+}

+ 41 - 4
watero-common-tool/src/main/java/com/iamberry/wechat/tools/StrUtils.java

@@ -18,6 +18,44 @@ import org.apache.commons.lang3.StringUtils;
  *
  */
 public class StrUtils {
+
+	public static String detectState(Integer state) {
+		if (state == null) {
+			return "未知";
+		}
+		String res;
+		switch (state) {
+			case 0:res = "待确认收货";break;
+			case 1:res = "检测机器中";break;
+			case 30:res = "待确认";break;
+			case 31:res = "维修中";break;
+			case 32:res = "维修完成";break;
+			case 33:res = "不维修(原机退回)";break;
+			case 34:res = "待确认维修";break;
+			case 35:res = "维修中";break;
+			case 36:res = "维修完成";break;
+			case 37:res = "机器无故障,原机退回";break;
+			case 38:res = "机器故障,待确认";break;
+			case 20:res = "待翻新入库";break;
+			case 21:res = "已翻新入库";break;
+			case 22:res = "不能翻新,待报废";break;
+			case 23:res = "已报废回收";break;
+			case 40:res = "待完善信息";break;
+			default: res = "未知";
+		}
+		return res;
+	}
+
+	/**
+	 * 将首字母小写
+	 * @param name
+	 * @return
+	 */
+	public static String toLowerCase(String name) {
+		name = name.substring(0, 1).toLowerCase() + name.substring(1);
+		return  name;
+	}
+
 	public static String checkStr(Object obj){
 		if(obj == null){
 			return "";
@@ -35,7 +73,7 @@ public class StrUtils {
 	public static String getPostParamsStr(HttpServletRequest req){
 		BufferedReader br = null;
         String line = null;
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         String postParams = "";
 		try {
 			req.setCharacterEncoding("UTF-8");
@@ -57,9 +95,8 @@ public class StrUtils {
 	 */
 	public static synchronized String getUUID(){
 	    UUID uuid=UUID.randomUUID();
-	    String str = uuid.toString(); 
-	    String uuidStr=str.replace("-", "");
-	    return uuidStr;
+	    String str = uuid.toString();
+		return str.replace("-", "");
 	}
 	
 	public static String[] strToArr(String str,String regex){

+ 18 - 9
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/ComplaintQuestionInfo.java

@@ -14,23 +14,32 @@ public class ComplaintQuestionInfo implements Serializable {
     private static final long serialVersionUID = 2430115923690696437L;
     private Integer questionId;         //id
     private Integer smallClassId;       //所属小类
-    private String questionName;       //问题名称
-    private String questionProfile;    //问题回复
+    private String questionName;        //问题名称
+    private String questionProfile;     //问题回复
     private Integer questionState;      //问题状态  1 使用中  2停止使用
     private Integer questionIsQcDetect; //是否需要QC检测0 .不需要;1 需要
-    private Date questionCreateTime; //创建时间
-    private Date questionUpdateTime; //修改时间
+    private Date questionCreateTime;    //创建时间
+    private Date questionUpdateTime;    //修改时间
     private Integer questionResolvedNum;//已解决总数
     private Integer questionNotSolvedNum;//未解决总数
 
-    private Integer complaintId; //问题分类id
-    private Integer complaintType;//咨询类型 1.售前 2.售后 3.其它
+    private Integer complaintId;        //问题分类id
+    private Integer complaintType;      //咨询类型 1.售前 2.售后 3.其它
     private Integer detectComplaintType;//与产品类型表绑定 1净水机2电动牙刷3净水花洒4软水机5果蔬机6净水龙头
 
-    private Integer questionNum; //数量
+    private Integer questionNum;        //数量
 
-    private String smallClassName; //小类名称
-    private String complaintClassName; //大类名称
+    private String smallClassName;      //小类名称
+    private String complaintClassName;  //大类名称
+    private Integer questionIsShow;   // 是否展示给优尼雅客户,1:不展示、2:展示
+
+    public Integer getQuestionIsShow() {
+        return questionIsShow;
+    }
+
+    public void setQuestionIsShow(Integer questionIsShow) {
+        this.questionIsShow = questionIsShow;
+    }
 
     public Integer getQuestionId() {
         return questionId;

+ 17 - 9
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/ComplaintTypeInfo.java

@@ -16,15 +16,23 @@ import java.util.List;
 public class ComplaintTypeInfo implements Serializable {
     private static final long serialVersionUID = -4256301378645683063L;
     private Integer complaintId;                //id
-    private Integer complaintConsultingType;  //咨询类型
-    private String complaintClassName;       //类别名称
-    private String complaintClassProfile;    //类别简介
-    private Integer complaintClassState;      //类型状态
-    private Date complaintCreateTime;      //创建时间
-    private Date complaintUpdateTime;      //修改时间
-    private Integer complaintType;      //与产品类型表绑定  1净水机2电动牙刷3净水花洒4软水机5果蔬机6净水龙头
-
-    private Integer complaintNum;       //查询数量
+    private Integer complaintConsultingType;    //咨询类型
+    private String complaintClassName;          //类别名称
+    private String complaintClassProfile;       //类别简介
+    private Integer complaintClassState;        //类型状态
+    private Date complaintCreateTime;           //创建时间
+    private Date complaintUpdateTime;           //修改时间
+    private Integer complaintType;              //与产品类型表绑定  1净水机2电动牙刷3净水花洒4软水机5果蔬机6净水龙头
+    private Integer complaintIsShow;            // 是否展示给优尼雅客户:1:不展示、2:展示
+    private Integer complaintNum;               //查询数量
+
+    public Integer getComplaintIsShow() {
+        return complaintIsShow;
+    }
+
+    public void setComplaintIsShow(Integer complaintIsShow) {
+        this.complaintIsShow = complaintIsShow;
+    }
 
     private List<ComplaintSmallClassInfo> smallClassInfoList = new ArrayList<ComplaintSmallClassInfo>();
 

+ 32 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/fm/ComplaintDetectInfo.java

@@ -149,6 +149,38 @@ public class ComplaintDetectInfo implements Serializable {
     private Date detectBuytime;//购买时间
 
     private String questionDescription;//问题描述
+
+    // 所属店铺(优尼雅售后系统新增)
+    private Integer storeId;
+    // 店铺名称
+    private String storeName;
+    // 店铺集合(可能存在多个店铺)
+    private Integer[] storeIds;
+
+    public Integer[] getStoreIds() {
+        return storeIds;
+    }
+
+    public void setStoreIds(Integer[] storeIds) {
+        this.storeIds = storeIds;
+    }
+
+    public String getStoreName() {
+        return storeName;
+    }
+
+    public void setStoreName(String storeName) {
+        this.storeName = storeName;
+    }
+
+    public Integer getStoreId() {
+        return storeId;
+    }
+
+    public void setStoreId(Integer storeId) {
+        this.storeId = storeId;
+    }
+
     public String getQuestionName() {
         return questionName;
     }

+ 17 - 9
watero-rst-core/src/main/java/com.iamberry.rst.core/fm/ComplaintSmallClassInfo.java

@@ -17,18 +17,26 @@ public class ComplaintSmallClassInfo implements Serializable {
 
     private static final long serialVersionUID = 6528451065211178607L;
     private Integer smallClassId;           //id
-    private Integer complaintId;           //所属类别
-    private String smallClassName;           //小类名称
-    private String smallClassProfile;           //小类简介
-    private Integer smallClassState;           //类型状态
-    private Integer smallQuestionNum;           //客诉问题数量
-    private Date smallClassCreateTime;           //创建时间
-    private Date smallClassUpdateTime;           //修改时间
-
-    private Integer smallClassNum; //数量
+    private Integer complaintId;            //所属类别
+    private String smallClassName;          //小类名称
+    private String smallClassProfile;       //小类简介
+    private Integer smallClassState;        //类型状态
+    private Integer smallQuestionNum;       //客诉问题数量
+    private Date smallClassCreateTime;      //创建时间
+    private Date smallClassUpdateTime;      //修改时间
+    private Integer smallClassIsShow;       // 是否展示给优尼雅客户,1:不展示、2:展示
+    private Integer smallClassNum;          //数量
 
     private List<ComplaintQuestionInfo> questionInfoList = new ArrayList<ComplaintQuestionInfo>();
 
+    public Integer getSmallClassIsShow() {
+        return smallClassIsShow;
+    }
+
+    public void setSmallClassIsShow(Integer smallClassIsShow) {
+        this.smallClassIsShow = smallClassIsShow;
+    }
+
     public Integer getSmallClassId() {
         return smallClassId;
     }

+ 19 - 34
watero-rst-core/src/main/java/com.iamberry.rst.core/order/Product.java

@@ -19,51 +19,36 @@ public class Product implements Serializable {
     private static final long serialVersionUID = 742401692635705177L;
 
     private Integer productId;          //商品id
-
     private String productName;         //商品名称
-
     private String productAbbreviation; //商品简称
-
     private Integer productSalesnum;    //已售数量
-
     private Integer productStatus;      //商品状态 1使用  2禁用
-
     private Date productCreateTime;     //创建时间
-
     private String productRemark;       //产品备注
-
     private Integer productType;        //商品类型
-
-    private String productNumber;        //产品型号
-
+    private String productNumber;       //产品型号
     private String typeName;            //产品类型名称
-
-    private String colorNameStr;            //颜色集合名称
-    private String colorName;            //颜色名称
-
-    private Integer productIsDetection;  //是否需要售后检测 1 需要 2不需要
-
-    //是否可批发 1:可批发 2:不可批发'
-    private Integer productWholesale;
-
-    //使用区域Strs
-    private String productAreaRelaStr;     //
-
-    private String colorBar;        //产品条码(SKU)
-
-    //应用场景
-//    private Integer productApplied; // 1,销售产品  2,维修产品
-
-    private List<ProductColor> colorList = new ArrayList<ProductColor>();   //产品颜色集合
-
-
-    private List<ProductAreaRela> productAreaRelaList = new ArrayList<>();  //区域
-
-
+    private String colorNameStr;        //颜色集合名称
+    private String colorName;           //颜色名称
+    private Integer productIsDetection; //是否需要售后检测 1 需要 2不需要
+    private Integer productWholesale;   //是否可批发 1:可批发 2:不可批发
+    private String productAreaRelaStr;  //使用区域Strs
+    private String colorBar;            //产品条码(SKU)
     private Integer productIsCombination;//是否组合产品 1.否。2是
+    private Integer productIsSplit;     //录入是否需要拆分  1需要 2不需要
+    private Integer produceId;          // 生产产品id
+
+    private List<ProductColor> colorList = new ArrayList<ProductColor>();                    //产品颜色集合
+    private List<ProductAreaRela> productAreaRelaList = new ArrayList<>();        //区域
     private List<ProductCombinatInfo> productCombinatList = new ArrayList<ProductCombinatInfo>();   //组合产品集合
 
-    private Integer productIsSplit; //录入是否需要拆分  1需要 2不需要
+    public Integer getProduceId() {
+        return produceId;
+    }
+
+    public void setProduceId(Integer produceId) {
+        this.produceId = produceId;
+    }
 
     public Integer getProductId() {
         return productId;

+ 27 - 24
watero-rst-core/src/main/java/com.iamberry.rst.core/pts/Produce.java

@@ -12,34 +12,37 @@ import java.util.List;
 public class Produce implements Serializable {
 
     private static final long serialVersionUID = -4839873263890150738L;
-    private Integer  produceId;             //产品id
-    private String produceNo;                 //产品编号
-    private String produceName;             //产品名称
-    private Integer produceStatus;          //产品状态
-    private String produceRemake;           //产品备注
-    private Date produceCreateTime;         //创建时间
-    private Date produceUpdateTime;         //修改时间
-
-    private Integer produceType;            //产品类型  1.净水机 2.冲奶机
-
-    private String producePattern;         //产品型号前两位  WA
-    private String produceModel;           //产品型号后两位  1X
-    private String produceFeature;         //产品特性  产品特性 A:国内;B:美国;C:欧洲;D:其他;
-    private String produceBrand;         //品牌字母
-
-    private Integer employeeId;            //员工id
-    private Integer wechatMpId;            //所属公众号ID
+    private Integer  produceId;         //产品id
+    private String produceNo;           //产品编号
+    private String produceName;         //产品名称
+    private Integer produceStatus;      //产品状态
+    private String produceRemake;       //产品备注
+    private Date produceCreateTime;     //创建时间
+    private Date produceUpdateTime;     //修改时间
+    private Integer produceType;        //产品类型  1.净水机 2.冲奶机
+    private String producePattern;      //产品型号前两位  WA
+    private String produceModel;        //产品型号后两位  1X
+    private String produceFeature;      //产品特性  产品特性 A:国内;B:美国;C:欧洲;D:其他;
+    private String produceBrand;        //品牌字母
+    private Integer employeeId;         //员工id
+    private Integer wechatMpId;         //所属公众号ID
+    private PtsBatch ptsBatch;          //批次
+    private String json;                //传入json值
+    private Integer isPrintQrcode;      //是否打印二维码 1 是 2否
+    private Integer isGeneralQrcode;    //是否使用通用二维码 1 是 2否
+    private String generalQrcode;       //通用二维码
+    private Integer berGenerateRules;   //1 序列化生成(原有生成规则)、2 随机生成 3 博乐宝生成规则
+    private Integer productId;          // 绑定的销售产品
 
     private List<ProduceProcess>  process = new ArrayList<ProduceProcess>();  //工序集合
 
-    private PtsBatch ptsBatch;      //批次
-
-    private String json;  //传入json值
+    public Integer getProductId() {
+        return productId;
+    }
 
-    private Integer isPrintQrcode;  //是否打印二维码 1 是 2否
-    private Integer isGeneralQrcode;  //是否使用通用二维码 1 是 2否
-    private String generalQrcode;  //通用二维码
-    private Integer berGenerateRules;  //1 序列化生成(原有生成规则)、2 随机生成 3 博乐宝生成规则
+    public void setProductId(Integer productId) {
+        this.productId = productId;
+    }
 
     public Integer getProduceId() {
         return produceId;

+ 11 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/sys/Admin.java

@@ -61,6 +61,17 @@ public class Admin implements Serializable {
 
     private Integer warehouseId;           // 所属仓库Id
 
+    // 当前客户所属的业务员
+    private Integer adminSalesId;
+
+    public Integer getAdminSalesId() {
+        return adminSalesId;
+    }
+
+    public void setAdminSalesId(Integer adminSalesId) {
+        this.adminSalesId = adminSalesId;
+    }
+
     public Integer getAdminManager() {
         return adminManager;
     }

+ 1 - 1
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/SalesOrderService.java

@@ -498,7 +498,7 @@ public interface SalesOrderService {
     /**
      * 查询订单各个状态数量
      */
-    SalesOrder getStatusNum();
+    SalesOrder getStatusNum(SalesOrder salesOrder);
 
     /**
      * 根据订单号查询订单

+ 10 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/fm/ComplaintDetectInfoService.java

@@ -11,6 +11,9 @@ import java.util.List;
  * 客诉-品质检测产品service
  */
 public interface ComplaintDetectInfoService {
+
+    ComplaintDetectInfo getDetectByMachine(String machine);
+
     /**
      * 查询单个品质检测产品
      * @return
@@ -45,6 +48,13 @@ public interface ComplaintDetectInfoService {
     PagedResult<ComplaintDetectInfo> listComplaintDetect(PageRequest<ComplaintDetectInfo> pageRequest);
 
     /**
+     * 【优尼雅客户系统】查询售后信息
+     * @param pageRequest
+     * @return
+     */
+    PagedResult<ComplaintDetectInfo> listAfterSales(PageRequest<ComplaintDetectInfo> pageRequest);
+
+    /**
      * 添加品检项
      * @return
      */

+ 1 - 2
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/ComplaintQuestionInfoServiceImpl.java

@@ -47,8 +47,7 @@ public class ComplaintQuestionInfoServiceImpl implements ComplaintQuestionInfoSe
 
     @Override
     public List<ComplaintQuestionInfo> listQuestionAll(ComplaintQuestionInfo complaintQuestionInfo) {
-        List<ComplaintQuestionInfo> list = complaintDetectInfoMapper.listComplaintQuestionInfo(complaintQuestionInfo);
-        return list;
+        return complaintDetectInfoMapper.listComplaintQuestionInfo(complaintQuestionInfo);
     }
 
 

+ 2 - 2
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java

@@ -1984,8 +1984,8 @@ public class SalesOrderServiceImpl implements SalesOrderService {
     }
 
     @Override
-    public SalesOrder getStatusNum() {
-        return salesOrderMapper.getStatusNum();
+    public SalesOrder getStatusNum(SalesOrder salesOrder) {
+        return salesOrderMapper.getStatusNum(salesOrder);
     }
 
     @Override

+ 1 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/SalesOrderMapper.java

@@ -424,7 +424,7 @@ public interface SalesOrderMapper {
     /**
      * 查询订单各个状态数量
      */
-    SalesOrder getStatusNum();
+    SalesOrder getStatusNum(SalesOrder salesOrder);
 
     /**
      * 根据订单号查询订单

+ 3 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/complaintQuestionInfoMapper.xml

@@ -85,6 +85,9 @@
       <if test="questionIsQcDetect != null">
         AND question_is_qc_detect = #{questionIsQcDetect}
       </if>
+      <if test="questionIsShow != null">
+        AND question_is_show = #{questionIsShow}
+      </if>
     </where>
     ORDER BY question_create_time DESC
   </select>

+ 3 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/complaintTypeInfoMapper.xml

@@ -32,6 +32,9 @@
       <if test="complaintType !=null and complaintType != 0 ">
         AND complaint_type = #{complaintType}
       </if>
+      <if test="complaintIsShow !=null and complaintIsShow != 0 ">
+        AND complaint_is_show = #{complaintIsShow}
+      </if>
       AND complaint_class_state = 1
     </where>
   </select>

+ 19 - 14
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/salesOrderMapper.xml

@@ -2371,23 +2371,28 @@
             </if>
         </where>
     </select>
-    <select id="getStatusNum" resultType="SalesOrder">
+    <select id="getStatusNum" resultType="SalesOrder" parameterType="SalesOrder">
         SELECT
-        sum(CASE WHEN sales_status = 0 then 1 else 0 end) AS beConfirmedNum,
-        sum(CASE WHEN (sales_post_firm IS NULL AND sales_status = 1) then 1 else 0 end) AS distributionLogisticsNum,
-        sum(CASE WHEN (sales_shipping_status = 0 AND sales_status = 1 AND sales_post_firm IS NOT NULL) then 1 else 0 end) AS sendTheGoods,
-        sum(CASE WHEN (sales_shipping_status = 11 AND sales_status = 1 AND sales_post_firm IS NOT NULL) then 1 else 0 end) AS playSingle,
-        sum(CASE WHEN (sales_deliver = 1 AND sales_shipping_status = 1 AND sales_status = 1 AND sales_post_firm IS NOT NULL) then 1 else 0 end) AS outbound,
-        sum(CASE WHEN (sales_deliver = 2 AND sales_shipping_status = 1 AND sales_status = 1 AND sales_post_firm IS NOT NULL AND order_case_date IS NULL) then 1 else 0 end) AS takeToBe,
-        sum(CASE WHEN (sales_deliver = 2 AND sales_shipping_status = 1 AND sales_status = 1 AND sales_post_firm IS NOT NULL AND order_case_date IS NULL AND TIMESTAMPDIFF(HOUR,sales_deliver_time,NOW()) &gt;= 3 AND TIMESTAMPDIFF(HOUR,sales_deliver_time,NOW()) &lt;= 24) then 1 else 0 end) AS tookTimeout,
-        sum(CASE WHEN (sales_deliver = 2 AND sales_shipping_status = 1 AND sales_status = 1 AND sales_post_firm IS NOT NULL AND order_case_date IS NULL AND TIMESTAMPDIFF(HOUR,sales_deliver_time,NOW()) &gt;= 24) then 1 else 0 end) AS tookAbnormal,
-        sum(CASE WHEN (TO_DAYS(sales_deliver_time) = TO_DAYS(NOW())  ) then 1 else 0 end) AS haveOutbound,
-        SUM(CASE WHEN (sales_deliver = 2 AND sales_shipping_status = 1 AND sales_error_state = 1 AND sales_status = 1 AND sales_post_firm IS NOT NULL AND order_case_date IS NOT NULL AND sales_send_time != order_case_date AND sales_sign_time is NULL AND sales_create_time >= '2020.05.01' AND TIMESTAMPDIFF(HOUR,order_case_date,NOW()) >= 85) then 1 else 0 end) AS signErrorNum
+            sum(CASE WHEN sales_status = 0 then 1 else 0 end) AS beConfirmedNum,
+            sum(CASE WHEN (sales_post_firm IS NULL AND sales_status = 1) then 1 else 0 end) AS distributionLogisticsNum,
+            sum(CASE WHEN (sales_shipping_status = 0 AND sales_status = 1 AND sales_post_firm IS NOT NULL) then 1 else 0 end) AS sendTheGoods,
+            sum(CASE WHEN (sales_shipping_status = 11 AND sales_status = 1 AND sales_post_firm IS NOT NULL) then 1 else 0 end) AS playSingle,
+            sum(CASE WHEN (sales_deliver = 1 AND sales_shipping_status = 1 AND sales_status = 1 AND sales_post_firm IS NOT NULL) then 1 else 0 end) AS outbound,
+            sum(CASE WHEN (sales_deliver = 2 AND sales_shipping_status = 1 AND sales_status = 1 AND sales_post_firm IS NOT NULL AND order_case_date IS NULL) then 1 else 0 end) AS takeToBe,
+            sum(CASE WHEN (sales_deliver = 2 AND sales_shipping_status = 1 AND sales_status = 1 AND sales_post_firm IS NOT NULL AND order_case_date IS NULL AND TIMESTAMPDIFF(HOUR,sales_deliver_time,NOW()) &gt;= 3 AND TIMESTAMPDIFF(HOUR,sales_deliver_time,NOW()) &lt;= 24) then 1 else 0 end) AS tookTimeout,
+            sum(CASE WHEN (sales_deliver = 2 AND sales_shipping_status = 1 AND sales_status = 1 AND sales_post_firm IS NOT NULL AND order_case_date IS NULL AND TIMESTAMPDIFF(HOUR,sales_deliver_time,NOW()) &gt;= 24) then 1 else 0 end) AS tookAbnormal,
+            sum(CASE WHEN (TO_DAYS(sales_deliver_time) = TO_DAYS(NOW())  ) then 1 else 0 end) AS haveOutbound,
+            SUM(CASE WHEN (sales_deliver = 2 AND sales_shipping_status = 1 AND sales_error_state = 1 AND sales_status = 1 AND sales_post_firm IS NOT NULL AND order_case_date IS NOT NULL AND sales_send_time != order_case_date AND sales_sign_time is NULL AND sales_create_time >= '2020.05.01' AND TIMESTAMPDIFF(HOUR,order_case_date,NOW()) >= 85) then 1 else 0 end) AS signErrorNum
         FROM
-        tb_rst_sales_order_info
+          tb_rst_sales_order_info
         WHERE
-        sales_status != 3
-        AND sales_batch_id != 'KS00000000000001'
+          sales_status != 3 AND sales_batch_id != 'KS00000000000001'
+          <if test="storeIds != null">
+            AND sales_store_id IN
+            <foreach collection="storeIds" item="storeId" index="index" separator="," open="(" close=")">
+                #{storeId}
+            </foreach >
+          </if>
     </select>
 
 

+ 15 - 2
watero-rst-service/src/main/java/com/iamberry/rst/service/fm/ComplaintDetectInfoServiceImpl.java

@@ -40,6 +40,7 @@ import java.util.Objects;
 
 @Service
 public class ComplaintDetectInfoServiceImpl implements ComplaintDetectInfoService {
+
     private Logger logger = LoggerFactory.getLogger(ComplaintDetectInfoServiceImpl.class);
     @Autowired
     private ComplaintDetectInfoMapper complaintDetectInfoMapper;
@@ -57,6 +58,11 @@ public class ComplaintDetectInfoServiceImpl implements ComplaintDetectInfoServic
     private SysMapper sysMapper;
 
     @Override
+    public ComplaintDetectInfo getDetectByMachine(String machine) {
+        return complaintDetectInfoMapper.getDetectByMachine(machine);
+    }
+
+    @Override
     public ComplaintDetectInfo getDetectById(Integer detectId) {
         return complaintDetectInfoMapper.getDetectById(detectId);
     }
@@ -296,7 +302,7 @@ public class ComplaintDetectInfoServiceImpl implements ComplaintDetectInfoServic
         Integer procTypeId;
         //判断是签收生成还是手动添加
         ComplaintDetectInfo complaintDetectInfo  = complaintDetectInfoMapper.getDetectById(record.getDetectId());
-        if(complaintDetectInfo.getDetectSource() == 2){
+        if(complaintDetectInfo.getDetectSource() == 2 || complaintDetectInfo.getDetectSource() == 3){
             //手动添加
             procMethod = procMethodMapper.getProcMethodById(complaintDetectInfo.getMethodId());
         }else{
@@ -384,7 +390,7 @@ public class ComplaintDetectInfoServiceImpl implements ComplaintDetectInfoServic
                     }
                 }
             }
-            if(complaintDetectInfo.getDetectSource() == 2){
+            if(complaintDetectInfo.getDetectSource() == 2 || complaintDetectInfo.getDetectSource() == 3){
                 //手动添加需要给业务员发送短信
                 //发送短信通知维修检测人员
                 if(record.getDetectState() == 30 || record.getDetectState() == 34|| record.getDetectState() == 38 || record.getDetectState() == 37){
@@ -424,6 +430,13 @@ public class ComplaintDetectInfoServiceImpl implements ComplaintDetectInfoServic
     }
 
     @Override
+    public PagedResult<ComplaintDetectInfo> listAfterSales(PageRequest<ComplaintDetectInfo> pageRequest) {
+        PageHelper.startPage(pageRequest.getPageNO(), pageRequest.getPageSize(), pageRequest.isPageTotal());
+        List<ComplaintDetectInfo> detectList = complaintDetectInfoMapper.listAfterSales(pageRequest.getData());
+        return PageUtil.getPage(detectList);
+    }
+
+    @Override
     public int insert(ComplaintDetectInfo record) {
         return complaintDetectInfoMapper.insert(record);
     }

+ 9 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/fm/mapper/ComplaintDetectInfoMapper.java

@@ -9,6 +9,8 @@ import java.util.List;
  */
 public interface ComplaintDetectInfoMapper {
 
+    ComplaintDetectInfo getDetectByMachine(String no);
+
     /**
      * 查询单个品质检测产品
      * @return
@@ -32,6 +34,13 @@ public interface ComplaintDetectInfoMapper {
      */
     List<ComplaintDetectInfo> listComplaintDetect(ComplaintDetectInfo item);
 
+
+    /**
+     * 【优尼雅客户系统】查询售后信息
+     * @return
+     */
+    List<ComplaintDetectInfo> listAfterSales(ComplaintDetectInfo item);
+
     /**
      * 添加品检
      * @return

+ 132 - 80
watero-rst-service/src/main/java/com/iamberry/rst/service/fm/mapper/complaintDetectInfoMapper.xml

@@ -2,6 +2,10 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="com.iamberry.rst.service.fm.mapper.ComplaintDetectInfoMapper" >
 
+  <select id="getDetectByMachine" parameterType="String" resultType="ComplaintDetectInfo">
+    select * from tb_rst_complaint_detect where machine_no = #{no}
+  </select>
+
   <select id="getDetectById" resultType="ComplaintDetectInfo" parameterType="java.lang.Integer" >
     select
       detect_id detectId,
@@ -115,84 +119,85 @@
 
   <select id="listComplaintDetect" resultType="ComplaintDetectInfo" parameterType="ComplaintDetectInfo" >
     select
-    cd.detect_id detectId,
-    cd.product_id productId,
-    cd.product_color_id productColorId,
-    cd.detect_product_number detectProductNumber,
-    cd.detect_state detectState,
-    cd.detect_phenomenon detectPhenomenon,
-    cd.detect_classification detectClassification,
-    cd.detect_failure_cause detectFailureCause,
-    cd.signclosed_id signclosedId,
-    cd.detect_results detectResults,
-    cd.detect_point detectPoint,
-    cd.detect_nalysis detectNalysis,
-    cd.detect_content detectContent,
-    cd.customer_id customerId,
-    cd.is_maintenance isMaintenance,
-    cd.detect_desc detectDesc,
-    cd.detect_date detectDate,
-    cd.detect_create_time detectCreateTime,
-    cd.detect_update_time detectUpdateTime,
-    cd.detect_offer detectOffer,
-    cd.detect_renovation detectRenovation,
-    cd.detect_processing_results detectProcessingResults,
-    cd.detect_customer_desc detectCustomerDesc,
-    cd.detect_production detectProduction,
-    cd.detect_fuselage_barcode detectFuselageBarcode,
-    cd.detect_film_type detectFilmType,
-    cd.detect_float_type detectFloatType,
-    cd.detect_version_number detectVersionNumber,
-    cd.detect_is_refurbishing detectIsRefurbishing,
-    cd.maintenance_results maintenanceResults,
-    cd.detect_number detectNumber,
-    cd.complete_cut_time completeCutTime,
-    maintenance_cut_time maintenanceCutTime,
-    qd.describe_title questionTitle,
-    pi.product_name productName,
-    pi.product_abbreviation productAbbreviation,
-    pt.type_name productTypeName,
-    ci.color_name colorName,
-    cpm.proc_method_name procMethodName,
-    cpt.proc_type_name procTypeName,
-    oi.sales_pay_time AS salesTime,
-    ap.province signclosedAddrProvincesName,
-    ac.city signclosedAddrCityName,
-    ad.district signclosedAddrAreaName,
-    cs.signclosed_date signclosedDate,
-    c.customer_create_time customerCreateTime,
-    cs.signclosed_logistics_number logisticsNumber,
-    cd.detect_is_print detectIsPrint,
-    cd.detect_print_time detectPrintTime,
-    cs.signclosed_send_name signclosedName,
-    cs.signclosed_send_tel signclosedTel,
-    cd.detect_placeorder detectPlaceorder,
-    cd.detect_completion_time detectCompletionTime,
-    cd.maintenance_completion_time maintenanceCompletionTime,
-    cd.renovation_completion_time renovationCompletionTime,
-    cd.scrap_completion_time scrapCompletionTime,
-    qd.describe_content describeContent,
-    qd.describe_handle_desc describeHandleDesc,
-    sa.admin_name adminName,
-    cs.signclosed_is_whetherLess signclosedIsWhetherLess,
-    cd.salesman_admin_id salesmanAdminId,
-    cd.detect_name detectName,
-    cd.detect_tel detectTel,
-    cd.question_id questionId,
-    cd.method_id methodId,
-    cd.detect_source detectSource,
-    ssa.admin_name salesmanAdminName,
-    cq.question_name questionName,
-    cq.question_profile questionProfile,
-    cpms.proc_method_name methodName,
-    cpts.proc_type_name typeName,
-    cd.company_id companyId,
-    si.store_name signclosedStoreName,
-    cd.detect_is_download detectIsDownload,
-    cs.signclosed_customer_desc signclosedCustomerDesc,
-    cd.detect_confirm_time detectConfirmTime,
-    cd.detect_buy_time detectBuytime,
-    cd.question_description questionDescription
+      cd.detect_id detectId,
+      cd.product_id productId,
+      cd.product_color_id productColorId,
+      cd.detect_product_number detectProductNumber,
+      cd.detect_state detectState,
+      cd.detect_phenomenon detectPhenomenon,
+      cd.detect_classification detectClassification,
+      cd.detect_failure_cause detectFailureCause,
+      cd.signclosed_id signclosedId,
+      cd.detect_results detectResults,
+      cd.detect_point detectPoint,
+      cd.detect_nalysis detectNalysis,
+      cd.detect_content detectContent,
+      cd.customer_id customerId,
+      cd.is_maintenance isMaintenance,
+      cd.detect_desc detectDesc,
+      cd.detect_date detectDate,
+      cd.detect_create_time detectCreateTime,
+      cd.detect_update_time detectUpdateTime,
+      cd.detect_offer detectOffer,
+      cd.detect_renovation detectRenovation,
+      cd.detect_processing_results detectProcessingResults,
+      cd.detect_customer_desc detectCustomerDesc,
+      cd.detect_production detectProduction,
+      cd.detect_fuselage_barcode detectFuselageBarcode,
+      cd.detect_film_type detectFilmType,
+      cd.detect_float_type detectFloatType,
+      cd.detect_version_number detectVersionNumber,
+      cd.detect_is_refurbishing detectIsRefurbishing,
+      cd.maintenance_results maintenanceResults,
+      cd.detect_number detectNumber,
+      cd.complete_cut_time completeCutTime,
+      maintenance_cut_time maintenanceCutTime,
+      qd.describe_title questionTitle,
+      pi.product_name productName,
+      pi.product_abbreviation productAbbreviation,
+      pt.type_name productTypeName,
+      ci.color_name colorName,
+      cpm.proc_method_name procMethodName,
+      cpt.proc_type_name procTypeName,
+      oi.sales_pay_time AS salesTime,
+      ap.province signclosedAddrProvincesName,
+      ac.city signclosedAddrCityName,
+      ad.district signclosedAddrAreaName,
+      cs.signclosed_date signclosedDate,
+      c.customer_create_time customerCreateTime,
+      cs.signclosed_logistics_number logisticsNumber,
+      cd.detect_is_print detectIsPrint,
+      cd.detect_print_time detectPrintTime,
+      cs.signclosed_send_name signclosedName,
+      cs.signclosed_send_tel signclosedTel,
+      cd.detect_placeorder detectPlaceorder,
+      cd.detect_completion_time detectCompletionTime,
+      cd.maintenance_completion_time maintenanceCompletionTime,
+      cd.renovation_completion_time renovationCompletionTime,
+      cd.scrap_completion_time scrapCompletionTime,
+      qd.describe_content describeContent,
+      qd.describe_handle_desc describeHandleDesc,
+      sa.admin_name adminName,
+      cs.signclosed_is_whetherLess signclosedIsWhetherLess,
+      cd.salesman_admin_id salesmanAdminId,
+      cd.detect_name detectName,
+      cd.detect_tel detectTel,
+      cd.question_id questionId,
+      cd.method_id methodId,
+      cd.detect_source detectSource,
+      ssa.admin_name salesmanAdminName,
+      cq.question_name questionName,
+      cq.question_profile questionProfile,
+      cpms.proc_method_name methodName,
+      cpts.proc_type_name typeName,
+      cd.company_id companyId,
+      si.store_name signclosedStoreName,
+      cd.detect_is_download detectIsDownload,
+      cs.signclosed_customer_desc signclosedCustomerDesc,
+      cd.detect_confirm_time detectConfirmTime,
+      cd.detect_buy_time detectBuytime,
+      cd.question_description questionDescription,
+      ssi.store_name storeName
     from tb_rst_complaint_detect cd
     LEFT JOIN tb_rst_cm_question_describe qd on cd.customer_id = qd.customer_id
     LEFT JOIN tb_rst_product_color ci on cd.product_color_id = ci.color_id
@@ -214,6 +219,7 @@
     LEFT JOIN tb_rst_cm_proc_method cpms on cd.method_id = cpms.proc_method_id
     LEFT JOIN tb_rst_cm_proc_type cpts on cpms.proc_type_id = cpts.proc_type_id
     LEFT JOIN tb_rst_store_info si on cs.signclosed_store_id = si.store_id
+    LEFT JOIN tb_rst_store_info ssi on cd.store_id = ssi.store_id
     <where>
       <if test="productTypeId != null" >
         AND pt.type_id = #{productTypeId,jdbcType=INTEGER}
@@ -373,6 +379,50 @@
       ORDER BY cd.detect_create_time DESC
   </select>
 
+  <select id="listAfterSales" parameterType="ComplaintDetectInfo" resultType="ComplaintDetectInfo">
+    select
+            d.*, p.product_name as productName, m.proc_method_name AS methodName, c.color_name as colorName, q.question_name as questionTitle
+    from
+         tb_rst_complaint_detect d
+    left join
+         tb_rst_product_info p on d.product_id = p.product_id
+    left join
+         tb_rst_product_color c on c.color_id = d.product_color_id
+    left join
+         tb_rst_cm_proc_method m on d.method_id = m.proc_method_id
+    left join
+         tb_rst_cm_complaint_question q on q.question_id = d.question_id
+    <where>
+      <if test="detectState != null and detectState != 0">
+        d.detect_state = #{detectState}
+      </if>
+      <if test="storeId != null and storeId != 0">
+        AND d.store_id = #{storeId}
+      </if>
+      <if test="storeIds != null">
+        AND d.store_id IN
+        <foreach collection="storeIds" item="storeId" index="index" separator="," open="(" close=")">
+          #{storeId}
+        </foreach >
+      </if>
+      <if test="machineNo != null and machineNo != ''">
+        AND d.machine_no LIKE CONCAT('%', #{machineNo}, '%')
+      </if>
+      <if test="productName != null and productName != ''">
+        AND p.product_name LIKE CONCAT('%', #{productName}, '%')
+      </if>
+      <if test="detectName != null and detectName != ''">
+        AND d.detect_name LIKE CONCAT('%', #{detectName}, '%')
+      </if>
+      <if test="detectTel != null and detectTel != ''">
+        AND d.detect_tel LIKE CONCAT('%', #{detectTel}, '%')
+      </if>
+      <if test="methodName != null and methodName != ''">
+        AND m.proc_method_name LIKE CONCAT('%', #{methodName}, '%')
+      </if>
+    </where>
+  </select>
+
   <select id="listComplaintDetectByOrderId" resultType="ComplaintDetectInfo" parameterType="ComplaintDetectInfo" >
     select
       cd.*
@@ -568,7 +618,8 @@
     company_id,
     detect_confirm_time,
     detect_buy_time,
-    question_description
+    question_description,
+    store_id
     )
     values
       (
@@ -611,7 +662,8 @@
       #{companyId},
       #{detectConfirmTime},
       #{detectBuytime},
-      #{questionDescription}
+      #{questionDescription},
+      #{storeId}
       )
   </insert>
 

+ 3 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/fm/mapper/complaintSmallClassInfoMapper.xml

@@ -30,6 +30,9 @@
       <if test="complaintId !=null">
         AND complaint_id = #{complaintId}
       </if>
+      <if test="smallClassIsShow !=null">
+        AND small_class_is_show = #{smallClassIsShow}
+      </if>
       AND small_class_state = 1
     </where>
   </select>

+ 5 - 2
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/machineMapper.xml

@@ -618,8 +618,11 @@
             machine_sales_company_id machineSalesCompanyId,
             sc.sales_company_abbreviation machineSalesCompanyName
         FROM
-            tb_rst_pts_machine pm LEFT JOIN tb_rst_pts_sales_company sc on pm.machine_sales_company_id = sc.sales_company_id
-             WHERE  machine_barcode = #{machineBarcode}
+            tb_rst_pts_machine pm
+        LEFT JOIN
+            tb_rst_pts_sales_company sc on pm.machine_sales_company_id = sc.sales_company_id
+        WHERE
+            machine_barcode = #{machineBarcode}
     </select>
 
     <select id="getMachineAppByQrcode" parameterType="String" resultType="PtsMachine">

+ 3 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/produceMapper.xml

@@ -329,6 +329,8 @@
 
     <select id="getProduceByPro" parameterType="Produce" resultType="Produce">
         SELECT
+          *
+            <!--
             produce_id AS produceId,
             produce_no AS  produceNo,
             produce_type AS  produceType,
@@ -346,6 +348,7 @@
             is_general_qrcode AS isGeneralQrcode,
             general_qrcode AS generalQrcode,
             ber_generate_rules AS berGenerateRules
+            -->
         FROM
             tb_rst_pts_produce
         <where>