Prechádzať zdrojové kódy

Merge branch 'dev' of https://git.steerinfo.com/DAL-DAZHOU/DAL-DAZHOU-AMS-API into dev

txf 3 rokov pred
rodič
commit
2ca9243101

+ 1 - 1
src/main/java/com/steerinfo/dil/controller/AmsSalePlanController.java

@@ -78,7 +78,7 @@ public class AmsSalePlanController extends BaseRESTfulController {
             @ApiImplicitParam(name = "amsSalePlan", value = "销售计划", required = false, dataType = "AmsSalePlan")
     })
     @PostMapping(value = "/addAmsSalePlan")
-    public RESTfulResult addAmsSalePlan(@RequestBody(required = false) Map<String,Object> map){
+    public RESTfulResult addAmsSalePlan(@RequestBody(required = false) Map<String,Object> map) throws Exception {
         System.out.println(map);
         int i = amsSalePlanService.addAmsSalePlan(map);
         return success(i);

+ 1 - 1
src/main/java/com/steerinfo/dil/service/IAmsSalePlanService.java

@@ -23,7 +23,7 @@ public interface IAmsSalePlanService{
     //查询所有销售计划信息
     List<Map<String, Object>> getSalePlanInfo(Map<String,Object> map);
     //新增销售计划
-    int addAmsSalePlan(Map<String, Object> map);
+    int addAmsSalePlan(Map<String, Object> map) throws Exception;
     //获得物资编码
     List<Map<String, Object>> getMaterialName();
     //获得销售片区名称

+ 51 - 6
src/main/java/com/steerinfo/dil/service/impl/AmsSalePlanServiceImpl.java

@@ -3,11 +3,15 @@ package com.steerinfo.dil.service.impl;
 import com.steerinfo.dil.mapper.AmsSalePlanMapper;
 import com.steerinfo.dil.mapper.AmsSalePlanMaterialMapper;
 import com.steerinfo.dil.model.AmsSalePlan;
+import com.steerinfo.dil.model.AmsSalePlanMaterial;
 import com.steerinfo.dil.service.IAmsSalePlanService;
+
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
@@ -58,10 +62,24 @@ public class AmsSalePlanServiceImpl implements IAmsSalePlanService {
     }
 
     @Override
-    public int addAmsSalePlan(Map<String, Object> map) {
+    public int addAmsSalePlan(Map<String, Object> map) throws Exception {
+        Map<String,Object> map1 = (Map<String, Object>) map.get("amsSalePlan");
+        long planDate = (long) map1.get("planDate");
+        Date planDate1 = new Date(planDate);
+        Integer saleAreaId = (Integer) map1.get("saleAreaId");
+        String insertUsername = (String) map1.get("insertUsername");
+        long insertTime = (long) map1.get("insertTime");
+        Date insertTime1 = new Date(insertTime);
+        String insertUpdateRemark = (String) map1.get("insertUpdateRemark");
+        AmsSalePlan amsSalePlan = new AmsSalePlan();
+        amsSalePlan.setPlanDate(planDate1);
+        amsSalePlan.setSaleAreaId(new BigDecimal(saleAreaId));
+        amsSalePlan.setInsertUsername(insertUsername);
+        amsSalePlan.setInsertTime(insertTime1);
+        amsSalePlan.setInsertUpdateRemark(insertUpdateRemark);
+        List<Map<String,Object>> selectionList = (List<Map<String, Object>>) map.get("selectionList");
         //新增销售计划
         long id;
-        AmsSalePlan amsSalePlan = new AmsSalePlan();
         if(amsSalePlanMapper.selectMaxId()==null){
             id = 1;
         }else {
@@ -73,9 +91,9 @@ public class AmsSalePlanServiceImpl implements IAmsSalePlanService {
         BigDecimal areaId = amsSalePlan.getSaleAreaId();
         String areaName = amsSalePlanMapper.getAreaNameByAreaId(areaId);
         //获取计划日期
-        Date planDate = amsSalePlan.getPlanDate();
-        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
-        String DateString = simpleDateFormat.format(planDate);
+        Date planDate2 = amsSalePlan.getPlanDate();
+        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
+        String DateString = simpleDateFormat1.format(planDate2);
         //拼接片区名和日期
         String PlanName = areaName + DateString;
         amsSalePlan.setPlanName(PlanName);
@@ -85,9 +103,36 @@ public class AmsSalePlanServiceImpl implements IAmsSalePlanService {
         //新增
         int i = amsSalePlanMapper.insert(amsSalePlan);
         if(i==1){
+            for (Map<String, Object> stringObjectMap : selectionList) {
+                Integer materialId = (Integer) stringObjectMap.get("materialId");
+                Integer materialNumber = (Integer) stringObjectMap.get("orderPlanWeight");
+                AmsSalePlanMaterial amsSalePlanMaterial =new AmsSalePlanMaterial();
+                amsSalePlanMaterial.setSalePlanId(new BigDecimal(id));
+                amsSalePlanMaterial.setMaterialId(new BigDecimal(materialId));
+                amsSalePlanMaterial.setMaterialNumber(new BigDecimal(materialNumber));
+                addAmsSalePlanMaterial(amsSalePlanMaterial);
+            }
+        }
+        return i;
+    }
 
+    //新增销售计划物资信息
+    public int addAmsSalePlanMaterial(AmsSalePlanMaterial amsSalePlanMaterial) {
+        long id;
+        if(amsSalePlanMaterialMapper.selectMaxId()==null){
+            id = 1;
+        }else {
+            id = amsSalePlanMaterialMapper.selectMaxId().longValue()+1;
         }
-        return amsSalePlanMapper.insert(amsSalePlan);
+        //生成主键id
+        amsSalePlanMaterial.setPlanMaterialId(new BigDecimal(id));
+        //常规字段
+        amsSalePlanMaterial.setInsertUsername("admin");
+        amsSalePlanMaterial.setInsertTime(new Date());
+        amsSalePlanMaterial.setUpdateUsername("admin");
+        amsSalePlanMaterial.setUpdateTime(new Date());
+        amsSalePlanMaterial.setInsertUpdateRemark("无");
+        return amsSalePlanMaterialMapper.insert(amsSalePlanMaterial);
     }
 
     @Override

+ 205 - 0
src/main/java/com/steerinfo/dil/util/Util.java

@@ -0,0 +1,205 @@
+package com.steerinfo.dil.util;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * @Author zhangnan
+ * @Date 2021/5/26 8:59
+ * @Version 1.0
+ * 工具类
+ */
+public class Util {
+    /**
+     *
+     * @param map
+     * @param type
+     * @return
+     * @throws Exception
+     */
+    public static Object mapToBean(Map map, Object type) throws Exception {
+
+        try{
+            //获得Class对象
+            //Class clazz=type.getClass().getDeclaringClass();
+            Class clazz= (Class) type;
+            //通过空参构造器创建实例
+            Constructor constructor = clazz.getDeclaredConstructor();
+            constructor.setAccessible(true);
+            Object classObject =  constructor.newInstance();
+            //获得对象的所有属性名
+            Field[] fields = clazz.getDeclaredFields();
+            //遍历属性集合
+            for (int i=0;i<fields.length;i++){
+                Field field=fields[i];
+                //开启权限
+                field.setAccessible(true);
+                //判断是否保护属性值
+                if(map.containsKey(field.getName())){
+                    Object objectValue =map.get(field.getName());
+                    //判断jsonObject的item是否是String或者Integer,是简单类型直接赋值
+                    if ((objectValue instanceof String)||(objectValue instanceof Integer)||(objectValue instanceof Boolean)){
+                        //进行数据判断
+                        if (field.getType()== BigDecimal.class){
+                            field.set(classObject,new BigDecimal(objectValue.toString()));
+                        } else if (field.getType()==Short.class){
+                            if(objectValue.toString()=="0.00"){
+                                field.set(classObject,0);
+                            }
+                            field.set(classObject,Short.parseShort(objectValue.toString()));
+                        }else if (field.getType()== Date.class){
+                            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                            Date time = formatter.parse(objectValue.toString());
+                            field.set(classObject,time);
+                        }
+                        else {
+                            field.set(classObject,objectValue);
+                        }
+
+                    }
+                    //集合类型类型
+                    else if(objectValue instanceof List){
+                        Iterator<Object> iterator = ((List)objectValue).iterator();
+                        //这里使用的是arryList接收
+                        List list=new ArrayList<>();
+                        // 如果是List类型,得到其Generic的类型
+                        Type genericType = field.getGenericType();
+                        //如果是空的
+                        if(genericType == null) {
+                            genericType=Object.class;
+                        }
+                        // 如果是泛型参数的类型
+                        else if(genericType instanceof ParameterizedType){
+                            ParameterizedType pt = (ParameterizedType) genericType;
+                            //得到泛型里的class类型对象
+                            Class<?> genericClazz = (Class<?>)pt.getActualTypeArguments()[0];
+                            genericType=genericClazz;
+                        }
+                        while (iterator.hasNext()){
+                            Object nextObject = iterator.next();
+                            Object fieldValue =  jsonToBean(nextObject, genericType);
+                            list.add(fieldValue);
+                        }
+                        field.set(classObject,list);
+                    }
+                    //如果不是再判断是否是JSONOArray,复杂数据类型
+                    else{
+                        //如果是JSONObject需要判断是否是引用类型,如果是引用类型就还需要将值转为对应类型
+                        Object fieldValue =  jsonToBean(objectValue, field.getType());
+                        field.set(classObject,fieldValue);
+                    }
+
+                }
+
+
+            }
+
+            return classObject;
+        }catch (Exception ex){
+            throw ex;
+        }
+
+    }
+    /**
+     *
+     * @param json
+     * @param type
+     * @return
+     * @throws Exception
+     */
+    public static Object jsonToBean(Object json, Object type) throws Exception {
+        try{
+            JSONObject jsonObject=null;
+            //首先需要判断是否是json字符串如果是解析为jsonObject如果是JsonObject就直接赋值给jsonObject
+            if (json instanceof String){
+                //将json转为JSONOject
+                jsonObject= JSONObject.parseObject(json.toString());
+            }else {
+                jsonObject= (JSONObject) json;
+            }
+            //获得Class对象
+            //Class clazz=type.getClass().getDeclaringClass();
+            Class clazz= (Class) type;
+            //通过空参构造器创建实例
+            Constructor constructor = clazz.getDeclaredConstructor();
+            constructor.setAccessible(true);
+            Object classObject =  constructor.newInstance();
+            //获得对象的所有属性名
+            Field[] fields = clazz.getDeclaredFields();
+            //遍历属性集合
+            for (int i=0;i<fields.length;i++){
+                Field field=fields[i];
+                //开启权限
+                field.setAccessible(true);
+                //判断是否保护属性值
+                if(jsonObject.containsKey(field.getName())){
+                    Object objectValue =jsonObject.get(field.getName());
+                    //判断jsonObject的item是否是String或者Integer,是简单类型直接赋值
+                    if ((objectValue instanceof Long)||(objectValue instanceof String)||(objectValue instanceof Integer)||(objectValue instanceof Boolean)||(objectValue instanceof BigDecimal)){
+                        //进行数据判断
+                        if (field.getType()==BigDecimal.class){
+                            field.set(classObject,new BigDecimal(objectValue.toString()));
+                        } else if (field.getType()==Short.class){
+                            field.set(classObject,Short.parseShort(objectValue.toString()));
+                        }else if (field.getType()==Date.class){
+                            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                            Date time = formatter.parse(objectValue.toString());
+                            field.set(classObject,time);
+                        }
+                        else {
+                            field.set(classObject,objectValue);
+                        }
+                    }
+                    //集合类型类型
+                    else if(objectValue instanceof JSONArray){
+                        Iterator<Object> iterator = ((JSONArray) objectValue).iterator();
+                        //这里使用的是arryList接收
+                        List list=new ArrayList<>();
+                        // 如果是List类型,得到其Generic的类型
+                        Type genericType = field.getGenericType();
+                        //如果是空的
+                        if(genericType == null) {
+                            genericType=Object.class;
+                        }
+                        // 如果是泛型参数的类型
+                        else if(genericType instanceof ParameterizedType){
+                            ParameterizedType pt = (ParameterizedType) genericType;
+                            //得到泛型里的class类型对象
+                            Class<?> genericClazz = (Class<?>)pt.getActualTypeArguments()[0];
+                            genericType=genericClazz;
+                        }
+                        while (iterator.hasNext()){
+                            Object nextObject = iterator.next();
+                            Object fieldValue =  jsonToBean(nextObject, genericType);
+                            list.add(fieldValue);
+                        }
+                        field.set(classObject,list);
+                    }
+                    //如果不是再判断是否是JSONOArray,复杂数据类型
+                    else{
+                        //如果是JSONObject需要判断是否是引用类型,如果是引用类型就还需要将值转为对应类型
+                        Object fieldValue =  jsonToBean(objectValue, field.getType());
+                        field.set(classObject,fieldValue);
+                    }
+
+                }
+
+
+            }
+
+            return classObject;
+        }catch (Exception ex){
+            throw ex;
+        }
+    }
+
+
+}

+ 0 - 11
src/main/java/com/steerinfo/dil/util/util.java

@@ -1,11 +0,0 @@
-package com.steerinfo.dil.util;
-
-/**
- * @Author zhangnan
- * @Date 2021/5/26 8:59
- * @Version 1.0
- * 工具类
- */
-public class util {
-
-}

+ 4 - 1
src/main/resources/com/steerinfo/dil/mapper/AmsSalePlanMapper.xml

@@ -382,8 +382,8 @@
           "insertUpdateRemark" like '%${item}%'
         </foreach>
       </if>
-      <include refid="orderBy"></include>
     </where>
+    <include refid="orderBy"></include>
   </select>
 
   <sql id="orderBy">
@@ -393,6 +393,9 @@
         ${orderType}
       </if>
     </if>
+    <if test="orderField == null  ">
+      order by "insertTime" desc
+    </if>
   </sql>
 
   <select id="selectMaxId"  resultType="java.math.BigDecimal">

+ 1 - 0
src/main/resources/com/steerinfo/dil/mapper/AmsSalePlanMaterialMapper.xml

@@ -317,6 +317,7 @@
 
   <select id="getSalePlanMaterialInfo" parameterType="java.util.Map" resultType="java.util.LinkedHashMap">
     select plan_material.PLAN_MATERIAL_ID "planMaterialId",
+           r_material.MATERIAL_NAME "materialName",
            r_material.MATERIAL_CODE "materialCode",
            plan_material.MATERIAL_NUMBER "materialNumber"
     from AMS_SALE_PLAN_MATERIAL plan_material