From b5fbd89107c49777ff92a5b81797c56583949ca6 Mon Sep 17 00:00:00 2001
From: hjg <hjg@123.com>
Date: 星期一, 28 十月 2024 15:28:58 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 JavaSource/com/mandi/fendan/service/SaleBackOrderService.java          |    8 
 JavaSource/com/mandi/common/XmlUtils.java                              |  159 +++++++++
 JavaSource/com/mandi/fendan/mapper/SaleReturnMapper.java               |   21 +
 JavaSource/com/mandi/fendan/persist/SalesReturn.java                   |  140 ++++++++
 JavaSource/com/mandi/fendan/service/SaleReturnService.java             |   13 
 JavaSource/com/mandi/fendan/service/impl/SaleReturnServiceImpl.java    |   36 ++
 JavaSource/com/mandi/fendan/mapper/SaleBackOrderMapper.java            |   22 +
 JavaSource/com/mandi/fendan/mapper/xmls/SaleBackOrderMapper.xml        |   27 +
 JavaSource/com/mandi/fendan/mapper/xmls/SaleReturnMapper.xml           |   32 ++
 JavaSource/com/mandi/fendan/controller/SaleBackOrderController.java    |  139 ++++++++
 JavaSource/com/mandi/fendan/persist/SaleBackOrder.java                 |  131 ++++++++
 JavaSource/com/mandi/fendan/service/impl/SaleBackOrderServiceImpl.java |  189 +++++++++++
 12 files changed, 917 insertions(+), 0 deletions(-)

diff --git a/JavaSource/com/mandi/common/XmlUtils.java b/JavaSource/com/mandi/common/XmlUtils.java
new file mode 100644
index 0000000..f879e61
--- /dev/null
+++ b/JavaSource/com/mandi/common/XmlUtils.java
@@ -0,0 +1,159 @@
+/**
+ * Project Name:pay-protocol
+ * File Name:Xml.java
+ * Package Name:cn.swiftpass.pay.protocol
+ * Date:2014-8-10涓嬪崍10:48:21
+ *
+*/
+
+package com.mandi.common;
+
+import org.dom4j.Document;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+import org.xml.sax.InputSource;
+
+import javax.servlet.ServletInputStream;
+import javax.servlet.http.HttpServletRequest;
+import java.io.*;
+import java.util.*;
+
+/**
+ * ClassName:Xml
+ * Function: XML鐨勫伐鍏锋柟娉�
+ * Date:     2014-8-10 涓嬪崍10:48:21
+ * @author
+ */
+@SuppressWarnings({"rawtypes","unchecked"})
+public class XmlUtils {
+
+    /** <涓�鍙ヨ瘽鍔熻兘绠�杩�>
+     * <鍔熻兘璇︾粏鎻忚堪>request杞瓧绗︿覆
+     * @param request
+     * @return
+     * @see [绫汇�佺被#鏂规硶銆佺被#鎴愬憳]
+     */
+    public static String parseRequst(HttpServletRequest request){
+        String body = "";
+        try {
+            ServletInputStream inputStream = request.getInputStream();
+            BufferedReader br = new BufferedReader(new InputStreamReader(inputStream,"utf-8"));
+            while(true){
+                String info = br.readLine();
+                if(info == null){
+                    break;
+                }
+                if(body == null || "".equals(body)){
+                    body = info;
+                }else{
+                    body += info;
+                }
+            }
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return body;
+    }
+
+    public static String parseXML(SortedMap<String, String> parameters) {
+        StringBuffer sb = new StringBuffer();
+        sb.append("<xml>");
+        Set es = parameters.entrySet();
+        Iterator it = es.iterator();
+        while (it.hasNext()) {
+            Map.Entry entry = (Map.Entry)it.next();
+            String k = (String)entry.getKey();
+            String v = (String)entry.getValue();
+            if (null != v && !"".equals(v) && !"appkey".equals(k)) {
+                sb.append("<" + k + ">" + parameters.get(k) + "</" + k + ">\n");
+            }
+        }
+        sb.append("</xml>");
+        return sb.toString();
+    }
+
+    /**
+     * 浠巖equest涓幏寰楀弬鏁癕ap锛屽苟杩斿洖鍙鐨凪ap
+     *
+     * @param request
+     * @return
+     */
+    public static SortedMap getParameterMap(HttpServletRequest request) {
+        // 鍙傛暟Map
+        Map properties = request.getParameterMap();
+        // 杩斿洖鍊糓ap
+        SortedMap returnMap = new TreeMap();
+        Iterator entries = properties.entrySet().iterator();
+        Map.Entry entry;
+        String name = "";
+        String value = "";
+        while (entries.hasNext()) {
+            entry = (Map.Entry) entries.next();
+            name = (String) entry.getKey();
+            Object valueObj = entry.getValue();
+            if(null == valueObj){
+                value = "";
+            }else if(valueObj instanceof String[]){
+                String[] values = (String[])valueObj;
+                for(int i=0;i<values.length;i++){
+                    value = values[i] + ",";
+                }
+                value = value.substring(0, value.length()-1);
+            }else{
+                value = valueObj.toString();
+            }
+            returnMap.put(name, value.trim());
+        }
+        returnMap.remove("method");
+        return returnMap;
+    }
+
+    /**
+     * 杞琗MLmap
+     * @author
+     * @param xmlBytes
+     * @param charset
+     * @return
+     * @throws Exception
+     */
+    public static Map<String, String> toMap(byte[] xmlBytes,String charset) throws Exception{
+        SAXReader reader = new SAXReader(false);
+        InputSource source = new InputSource(new ByteArrayInputStream(xmlBytes));
+        source.setEncoding(charset);
+        Document doc = reader.read(source);
+        Map<String, String> params = XmlUtils.toMap(doc.getRootElement());
+        return params;
+    }
+
+    /**
+     * 杞琈AP
+     * @author
+     * @param element
+     * @return
+     */
+    public static Map<String, String> toMap(Element element){
+        Map<String, String> rest = new HashMap<String, String>();
+        List<Element> els = element.elements();
+        for(Element el : els){
+            rest.put(el.getName().toLowerCase(), el.getText());
+        }
+        return rest;
+    }
+
+    public static String toXml(Map<String, String> params){
+        StringBuilder buf = new StringBuilder();
+        List<String> keys = new ArrayList<String>(params.keySet());
+        Collections.sort(keys);
+        buf.append("<xml>");
+        for(String key : keys){
+            buf.append("<").append(key).append(">");
+            buf.append("<![CDATA[").append(params.get(key)).append("]]>");
+            buf.append("</").append(key).append(">\n");
+        }
+        buf.append("</xml>");
+        return buf.toString();
+    }
+}
+
diff --git a/JavaSource/com/mandi/fendan/controller/SaleBackOrderController.java b/JavaSource/com/mandi/fendan/controller/SaleBackOrderController.java
new file mode 100644
index 0000000..1aeb8df
--- /dev/null
+++ b/JavaSource/com/mandi/fendan/controller/SaleBackOrderController.java
@@ -0,0 +1,139 @@
+package com.mandi.fendan.controller;
+
+import com.mandi.common.XmlUtils;
+import com.mandi.fendan.persist.SaleBackOrder;
+import com.mandi.fendan.persist.SalesReturn;
+import com.mandi.fendan.service.SaleBackOrderService;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.log4j.Logger;
+import org.json.JSONArray;
+import org.json.JSONObject;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+
+
+@RestController
+@RequestMapping(value="/api/saleBackOrder",method={RequestMethod.GET,RequestMethod.POST})
+public class SaleBackOrderController {
+
+    private Logger log=Logger.getLogger(SaleBackOrderController.class);
+    @Resource
+    private SaleBackOrderService saleBackOrderService;
+
+    @RequestMapping(value = "/receive.htm", method = {RequestMethod.POST,RequestMethod.GET })
+//    public void insertSaleBackOrder(@RequestBody SaleBackOrder saleBackOrder){
+    public void insertSaleBackOrder(HttpServletRequest req, HttpServletResponse resp){
+        try {
+            String strInfo = XmlUtils.parseRequst(req);
+            if(StringUtils.isNotBlank(strInfo)){
+                JSONObject jsonObject = new JSONObject(strInfo);
+                SaleBackOrder convert = convert(jsonObject);
+                saleBackOrderService.saveOrUpdateOrDelete(convert);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+
+    }
+    private SaleBackOrder convert(JSONObject jsonObject) throws Exception {
+        SaleBackOrder convert = new SaleBackOrder();
+        if (StringUtils.isNotBlank(jsonObject.getString("newSalesId"))) {
+            convert.setNewSalesId(jsonObject.getString("newSalesId"));
+        }
+        if (StringUtils.isNotBlank(jsonObject.getString("docNum"))) {
+            convert.setDocNum(jsonObject.getString("docNum"));
+        }
+        if (StringUtils.isNotBlank(jsonObject.getString("docTime"))) {
+            convert.setDocTime(jsonObject.getString("docTime"));
+        }
+        if (StringUtils.isNotBlank(jsonObject.getString("newAccountNo"))) {
+            convert.setNewAccountNo(jsonObject.getString("newAccountNo"));
+        }
+        if (StringUtils.isNotBlank(jsonObject.getString("createdBy"))) {
+            convert.setCreatedBy(jsonObject.getString("createdBy"));
+        }
+        if (StringUtils.isNotBlank(jsonObject.getString("ncDepCode"))) {
+            convert.setNcDepCode(jsonObject.getString("ncDepCode"));
+        }
+        if (StringUtils.isNotBlank(jsonObject.getString("userCode"))) {
+            convert.setUserCode(jsonObject.getString("userCode"));
+        }
+        if (StringUtils.isNotBlank(jsonObject.getString("invoiceNum"))) {
+            convert.setInvoiceNum(jsonObject.getString("invoiceNum"));
+        }
+        if (StringUtils.isNotBlank(jsonObject.getString("docRemark"))) {
+            convert.setDocRemark(jsonObject.getString("docRemark"));
+        }
+        if (StringUtils.isNotBlank(jsonObject.getString("rcDepCode"))) {
+            convert.setRcDepCode(jsonObject.getString("rcDepCode"));
+        }
+        if (StringUtils.isNotBlank(jsonObject.getString("rcLocCompCode"))) {
+            convert.setRcLocCompCode(jsonObject.getString("rcLocCompCode"));
+        }
+        if (StringUtils.isNotBlank(jsonObject.getString("operState"))) {
+            convert.setOperState(jsonObject.getString("operState"));
+        }
+        JSONArray itemList = jsonObject.getJSONArray("itemList");
+        List<SalesReturn> salesReturnList = new ArrayList<>();
+        for(int i=0;i<itemList.length();i++){
+            SalesReturn salesReturn = new SalesReturn();
+            JSONObject itemObject = itemList.getJSONObject(i);
+            // 璁剧疆鍚勪釜瀛楁
+            if (StringUtils.isNotBlank(itemObject.getString("itemId"))) {
+                salesReturn.setItemId(itemObject.getString("itemId"));
+            }
+            if (StringUtils.isNotBlank(itemObject.getString("batchNum"))) {
+                salesReturn.setBatchNum(itemObject.getString("batchNum"));
+            }
+            if (StringUtils.isNotBlank(itemObject.getString("materialName"))) {
+                salesReturn.setMaterialName(itemObject.getString("materialName"));
+            }
+            if (StringUtils.isNotBlank(itemObject.getString("specsName"))) {
+                salesReturn.setSpecsName(itemObject.getString("specsName"));
+            }
+            if (StringUtils.isNotBlank(itemObject.getString("jzfmName"))) {
+                salesReturn.setJzfmName(itemObject.getString("jzfmName"));
+            }
+            if (StringUtils.isNotBlank(itemObject.getString("materialSize"))) {
+                salesReturn.setMaterialSize(itemObject.getString("materialSize"));
+            }
+            if (StringUtils.isNotBlank(itemObject.getString("outerPackingSize"))) {
+                salesReturn.setOuterPackingSize(itemObject.getString("outerPackingSize"));
+            }
+            if (itemObject.has("grossWeight")) {
+                salesReturn.setGrossWeight(itemObject.getDouble("grossWeight"));
+            }
+            if (itemObject.has("netWeight")) {
+                salesReturn.setNetWeight(itemObject.getDouble("netWeight"));
+            }
+            if (StringUtils.isNotBlank(itemObject.getString("backTypeName"))) {
+                salesReturn.setBackTypeName(itemObject.getString("backTypeName"));
+            }
+            if (StringUtils.isNotBlank(itemObject.getString("backReason"))) {
+                salesReturn.setBackReason(itemObject.getString("backReason"));
+            }
+            if (StringUtils.isNotBlank(itemObject.getString("alloyStateName"))) {
+                salesReturn.setAlloyStateName(itemObject.getString("alloyStateName"));
+            }
+            if (StringUtils.isNotBlank(itemObject.getString("itemRemark"))) {
+                salesReturn.setItemRemark(itemObject.getString("itemRemark"));
+            }
+            if (StringUtils.isNotBlank(itemObject.getString("operState"))) {
+                salesReturn.setOperState(itemObject.getString("operState"));
+            }
+            // 娣诲姞鍒板垪琛ㄤ腑
+            salesReturnList.add(salesReturn);
+        }
+        convert.setItemList(salesReturnList);
+        return convert;
+    }
+
+}
diff --git a/JavaSource/com/mandi/fendan/mapper/SaleBackOrderMapper.java b/JavaSource/com/mandi/fendan/mapper/SaleBackOrderMapper.java
new file mode 100644
index 0000000..aeec9df
--- /dev/null
+++ b/JavaSource/com/mandi/fendan/mapper/SaleBackOrderMapper.java
@@ -0,0 +1,22 @@
+package com.mandi.fendan.mapper;
+
+import com.mandi.fendan.persist.SaleBackOrder;
+import org.apache.ibatis.annotations.Delete;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+public interface SaleBackOrderMapper {
+
+    //鏂板
+    void saveEntity(SaleBackOrder saleBackOrder);
+
+    //鏍规嵁Id鏌ヨ
+    @Select("select a.* from SaleBackOrder a where a.NewSalesId=#{newSalesId}")
+    SaleBackOrder queryById(@Param("newSalesId") String newSalesId);
+
+    //淇敼
+    void updateEntity(SaleBackOrder saleBackOrder);
+
+    @Delete("delete from SaleBackOrder where NewSalesId=#{newSalesId} ")
+    void deleteByNewSalesId(@Param("newSalesId") String newSalesId);
+}
diff --git a/JavaSource/com/mandi/fendan/mapper/SaleReturnMapper.java b/JavaSource/com/mandi/fendan/mapper/SaleReturnMapper.java
new file mode 100644
index 0000000..a8cfe7d
--- /dev/null
+++ b/JavaSource/com/mandi/fendan/mapper/SaleReturnMapper.java
@@ -0,0 +1,21 @@
+package com.mandi.fendan.mapper;
+
+import com.mandi.fendan.persist.SalesReturn;
+import org.apache.ibatis.annotations.Delete;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+
+public interface SaleReturnMapper {
+
+    void saveEntity(SalesReturn salesReturn);
+    //鏍规嵁Id鏌ヨ
+    @Select("select a.* from SalesReturn a where a.itemId=#{itemId}")
+    SalesReturn queryById(@Param("itemId") String itemId);
+
+    void updateEntity(SalesReturn convert);
+
+    //鏍规嵁Id鍒犻櫎
+    @Delete("delete from SalesReturn where itemId=#{itemId} ")
+    void deleteByItemId(@Param("itemId") String itemId);
+}
diff --git a/JavaSource/com/mandi/fendan/mapper/xmls/SaleBackOrderMapper.xml b/JavaSource/com/mandi/fendan/mapper/xmls/SaleBackOrderMapper.xml
new file mode 100644
index 0000000..3c3a730
--- /dev/null
+++ b/JavaSource/com/mandi/fendan/mapper/xmls/SaleBackOrderMapper.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mandi.fendan.mapper.SaleBackOrderMapper">
+
+	<insert id="saveEntity">
+        INSERT INTO SaleBackOrder (newSalesId, docNum, docTime, newAccountNo, createdBy,
+            ncDepCode, userCode, invoiceNum, docRemark, rcDepCode, rcLocCompCode, operState)
+        VALUES (#{newSalesId}, #{docNum}, #{docTime}, #{newAccountNo}, #{createdBy},
+            #{ncDepCode}, #{userCode}, #{invoiceNum}, #{docRemark}, #{rcDepCode}, #{rcLocCompCode}, #{operState})
+    </insert>
+    <update id="updateEntity">
+        UPDATE SaleBackOrder
+            SET DocNum = #{docNum},
+            DocTime = #{docTime},
+            NewAccountNo = #{newAccountNo},
+            CreatedBy = #{createdBy},
+            NcDepCode = #{ncDepCode},
+            UserCode = #{userCode},
+            InvoiceNum = #{invoiceNum},
+            DocRemark = #{docRemark},
+            RcDepCode = #{rcDepCode},
+            RcLocCompCode = #{rcLocCompCode},
+            OperState = #{operState}
+        WHERE NewSalesId = #{newSalesId}
+    </update>
+
+</mapper>
diff --git a/JavaSource/com/mandi/fendan/mapper/xmls/SaleReturnMapper.xml b/JavaSource/com/mandi/fendan/mapper/xmls/SaleReturnMapper.xml
new file mode 100644
index 0000000..713d3ff
--- /dev/null
+++ b/JavaSource/com/mandi/fendan/mapper/xmls/SaleReturnMapper.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mandi.fendan.mapper.SaleReturnMapper">
+
+	<insert id="saveEntity">
+        INSERT INTO SalesReturn (itemId, batchNum, materialName, specsName, jzfmName,
+            materialSize, outerPackingSize, grossWeight, netWeight, backTypeName,
+            backReason, alloyStateName, itemRemark, operState)
+        VALUES (#{itemId}, #{batchNum}, #{materialName}, #{specsName}, #{jzfmName},
+            #{materialSize}, #{outerPackingSize}, #{grossWeight}, #{netWeight},
+            #{backTypeName}, #{backReason}, #{alloyStateName}, #{itemRemark}, #{operState})
+    </insert>
+    <update id="updateEntity">
+        UPDATE SalesReturn
+            SET
+                batchNum = #{batchNum},
+                materialName = #{materialName},
+                specsName = #{specsName},
+                jzfmName = #{jzfmName},
+                materialSize = #{materialSize},
+                outerPackingSize = #{outerPackingSize},
+                grossWeight = #{grossWeight},
+                netWeight = #{netWeight},
+                backTypeName = #{backTypeName},
+                backReason = #{backReason},
+                alloyStateName = #{alloyStateName},
+                itemRemark = #{itemRemark},
+                operState = #{operState}
+            WHERE itemId = #{itemId}
+    </update>
+
+</mapper>
diff --git a/JavaSource/com/mandi/fendan/persist/SaleBackOrder.java b/JavaSource/com/mandi/fendan/persist/SaleBackOrder.java
new file mode 100644
index 0000000..0f9f9c4
--- /dev/null
+++ b/JavaSource/com/mandi/fendan/persist/SaleBackOrder.java
@@ -0,0 +1,131 @@
+package com.mandi.fendan.persist;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+import java.util.List;
+
+@Entity
+@Table(name="fd_SeparateList")
+public class SaleBackOrder implements Serializable {
+
+    @Id
+    private String newSalesId;//涓婚敭
+    private String docNum;//鍗曟嵁鍙�
+    private String docTime;//鍗曟嵁鏃ユ湡
+    private String newAccountNo;//瀹㈡埛
+    private String createdBy;//鍒涘缓浜�
+    private String ncDepCode;//閮ㄩ棬
+    private String userCode;//涓氬姟鍛�
+    private String invoiceNum;//鍙戠エ鍙�
+    private String docRemark;//澶囨敞
+    private String rcDepCode;//鏀惰揣鍗曚綅
+    private String rcLocCompCode;//瀹㈡埛閫�璐ц鏀垮尯鍒�
+    private String operState;//澶勭悊鎿嶄綔
+    private List<SalesReturn> itemList;
+
+    public String getNewSalesId() {
+        return newSalesId;
+    }
+
+    public void setNewSalesId(String newSalesId) {
+        this.newSalesId = newSalesId;
+    }
+
+    public String getDocNum() {
+        return docNum;
+    }
+
+    public void setDocNum(String docNum) {
+        this.docNum = docNum;
+    }
+
+    public String getDocTime() {
+        return docTime;
+    }
+
+    public void setDocTime(String docTime) {
+        this.docTime = docTime;
+    }
+
+    public String getNewAccountNo() {
+        return newAccountNo;
+    }
+
+    public void setNewAccountNo(String newAccountNo) {
+        this.newAccountNo = newAccountNo;
+    }
+
+    public String getCreatedBy() {
+        return createdBy;
+    }
+
+    public void setCreatedBy(String createdBy) {
+        this.createdBy = createdBy;
+    }
+
+    public String getNcDepCode() {
+        return ncDepCode;
+    }
+
+    public void setNcDepCode(String ncDepCode) {
+        this.ncDepCode = ncDepCode;
+    }
+
+    public String getUserCode() {
+        return userCode;
+    }
+
+    public void setUserCode(String userCode) {
+        this.userCode = userCode;
+    }
+
+    public String getInvoiceNum() {
+        return invoiceNum;
+    }
+
+    public void setInvoiceNum(String invoiceNum) {
+        this.invoiceNum = invoiceNum;
+    }
+
+    public String getDocRemark() {
+        return docRemark;
+    }
+
+    public void setDocRemark(String docRemark) {
+        this.docRemark = docRemark;
+    }
+
+    public String getRcDepCode() {
+        return rcDepCode;
+    }
+
+    public void setRcDepCode(String rcDepCode) {
+        this.rcDepCode = rcDepCode;
+    }
+
+    public String getRcLocCompCode() {
+        return rcLocCompCode;
+    }
+
+    public void setRcLocCompCode(String rcLocCompCode) {
+        this.rcLocCompCode = rcLocCompCode;
+    }
+
+    public String getOperState() {
+        return operState;
+    }
+
+    public void setOperState(String operState) {
+        this.operState = operState;
+    }
+
+    public List<SalesReturn> getItemList() {
+        return itemList;
+    }
+
+    public void setItemList(List<SalesReturn> itemList) {
+        this.itemList = itemList;
+    }
+}
diff --git a/JavaSource/com/mandi/fendan/persist/SalesReturn.java b/JavaSource/com/mandi/fendan/persist/SalesReturn.java
new file mode 100644
index 0000000..11dfcb4
--- /dev/null
+++ b/JavaSource/com/mandi/fendan/persist/SalesReturn.java
@@ -0,0 +1,140 @@
+package com.mandi.fendan.persist;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+@Entity
+@Table(name="SalesReturn")
+public class SalesReturn implements Serializable {
+
+    @Id
+    private String itemId; // 鐗╂枡缂栧彿
+    private String batchNum; // 鎵规鍙�
+    private String materialName; // 鐗╂枡鍚嶇О
+    private String specsName; // 瑙勬牸鍚嶇О
+    private String jzfmName; // 澶圭焊瑕嗚啘鍚嶇О
+    private String materialSize; // 灏哄
+    private String outerPackingSize; // 澶栧寘瑁呭昂瀵�
+    private Double grossWeight; // 姣涢噸
+    private Double netWeight; // 鍑�閲�
+    private String backTypeName; // 閫�璐х被鍨�
+    private String backReason; // 閫�璐у師鍥�
+    private String alloyStateName; // 鍚堥噾鐘舵�佸悕绉�
+    private String itemRemark; // 澶囨敞
+    private String operState; // 澶勭悊鎿嶄綔
+
+
+    public String getItemId() {
+        return itemId;
+    }
+
+    public void setItemId(String itemId) {
+        this.itemId = itemId;
+    }
+
+    public String getBatchNum() {
+        return batchNum;
+    }
+
+    public void setBatchNum(String batchNum) {
+        this.batchNum = batchNum;
+    }
+
+    public String getMaterialName() {
+        return materialName;
+    }
+
+    public void setMaterialName(String materialName) {
+        this.materialName = materialName;
+    }
+
+    public String getSpecsName() {
+        return specsName;
+    }
+
+    public void setSpecsName(String specsName) {
+        this.specsName = specsName;
+    }
+
+    public String getJzfmName() {
+        return jzfmName;
+    }
+
+    public void setJzfmName(String jzfmName) {
+        this.jzfmName = jzfmName;
+    }
+
+    public String getMaterialSize() {
+        return materialSize;
+    }
+
+    public void setMaterialSize(String materialSize) {
+        this.materialSize = materialSize;
+    }
+
+    public String getOuterPackingSize() {
+        return outerPackingSize;
+    }
+
+    public void setOuterPackingSize(String outerPackingSize) {
+        this.outerPackingSize = outerPackingSize;
+    }
+
+    public Double getGrossWeight() {
+        return grossWeight;
+    }
+
+    public void setGrossWeight(Double grossWeight) {
+        this.grossWeight = grossWeight;
+    }
+
+    public Double getNetWeight() {
+        return netWeight;
+    }
+
+    public void setNetWeight(Double netWeight) {
+        this.netWeight = netWeight;
+    }
+
+    public String getBackTypeName() {
+        return backTypeName;
+    }
+
+    public void setBackTypeName(String backTypeName) {
+        this.backTypeName = backTypeName;
+    }
+
+    public String getBackReason() {
+        return backReason;
+    }
+
+    public void setBackReason(String backReason) {
+        this.backReason = backReason;
+    }
+
+    public String getAlloyStateName() {
+        return alloyStateName;
+    }
+
+    public void setAlloyStateName(String alloyStateName) {
+        this.alloyStateName = alloyStateName;
+    }
+
+    public String getItemRemark() {
+        return itemRemark;
+    }
+
+    public void setItemRemark(String itemRemark) {
+        this.itemRemark = itemRemark;
+    }
+
+    public String getOperState() {
+        return operState;
+    }
+
+    public void setOperState(String operState) {
+        this.operState = operState;
+    }
+}
diff --git a/JavaSource/com/mandi/fendan/service/SaleBackOrderService.java b/JavaSource/com/mandi/fendan/service/SaleBackOrderService.java
new file mode 100644
index 0000000..eda8947
--- /dev/null
+++ b/JavaSource/com/mandi/fendan/service/SaleBackOrderService.java
@@ -0,0 +1,8 @@
+package com.mandi.fendan.service;
+
+import com.mandi.fendan.persist.SaleBackOrder;
+
+public interface SaleBackOrderService {
+    void saveOrUpdateOrDelete(SaleBackOrder saleBackOrder);
+
+}
diff --git a/JavaSource/com/mandi/fendan/service/SaleReturnService.java b/JavaSource/com/mandi/fendan/service/SaleReturnService.java
new file mode 100644
index 0000000..6a04021
--- /dev/null
+++ b/JavaSource/com/mandi/fendan/service/SaleReturnService.java
@@ -0,0 +1,13 @@
+package com.mandi.fendan.service;
+
+import com.mandi.fendan.persist.SalesReturn;
+
+public interface SaleReturnService{
+    void saveEntity(SalesReturn salesReturn);
+
+    SalesReturn queryById(String itemId);
+
+    void updateEntity(SalesReturn convert);
+
+    void deleteByItemId(String itemId);
+}
diff --git a/JavaSource/com/mandi/fendan/service/impl/SaleBackOrderServiceImpl.java b/JavaSource/com/mandi/fendan/service/impl/SaleBackOrderServiceImpl.java
new file mode 100644
index 0000000..448a222
--- /dev/null
+++ b/JavaSource/com/mandi/fendan/service/impl/SaleBackOrderServiceImpl.java
@@ -0,0 +1,189 @@
+package com.mandi.fendan.service.impl;
+
+
+import com.mandi.fendan.mapper.SaleBackOrderMapper;
+import com.mandi.fendan.persist.SaleBackOrder;
+import com.mandi.fendan.persist.SalesReturn;
+import com.mandi.fendan.service.SaleBackOrderService;
+import com.mandi.fendan.service.SaleReturnService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Service
+public class SaleBackOrderServiceImpl implements SaleBackOrderService {
+    @Resource
+    private SaleBackOrderMapper saleBackOrderMapper;
+    @Resource
+    private SaleReturnService saleReturnService;
+
+    public void saveOrUpdateOrDelete(SaleBackOrder saleBackOrder) {
+        //鏇存柊鎴栨柊澧炲疄浣�
+        if(StringUtils.isNotBlank(saleBackOrder.getNewSalesId())){
+            SaleBackOrder saleBackOrder1 = saleBackOrderMapper.queryById(saleBackOrder.getNewSalesId());
+            //鏈変富閿暟鎹� 鏇存柊
+            if(saleBackOrder1!=null){
+                //鏈変富閿暟鎹� 骞跺鐞嗙姸鎬佷负鍒犻櫎鍒欏垹闄�
+                if("1".equals(saleBackOrder.getOperState())) {
+                    saleBackOrderMapper.deleteByNewSalesId(saleBackOrder.getNewSalesId());
+                }else{
+                    SaleBackOrder convert = convert(saleBackOrder, saleBackOrder1);
+                    saleBackOrderMapper.updateEntity(convert);
+                }
+            }else {
+                //鏃犱富閿暟鎹� 鏂板
+                saleBackOrderMapper.saveEntity(saleBackOrder);
+            }
+        }
+        //鏇存柊鎴栨柊澧炲瓙瀹炰綋
+        if(!saleBackOrder.getItemList().isEmpty() || saleBackOrder.getItemList().size()!=0){
+            List<SalesReturn> salesReturnList = saleBackOrder.getItemList();
+            for(SalesReturn salesReturn:salesReturnList){
+                if(StringUtils.isNotBlank(salesReturn.getItemId())) {
+                    SalesReturn salesReturn1=saleReturnService.queryById(salesReturn.getItemId());
+                    //鏈変富閿暟鎹� 鏇存柊
+                    if(salesReturn1!=null){
+                        //鏈変富閿暟鎹� 骞跺鐞嗙姸鎬佷负鍒犻櫎鍒欏垹闄�
+                        if("1".equals(salesReturn.getOperState())) {
+                            saleReturnService.deleteByItemId(salesReturn.getItemId());
+                        }else {
+                            SalesReturn convert = convertSalesReturn(salesReturn, salesReturn1);
+                            saleReturnService.updateEntity(convert);
+                        }
+                    }else{
+                        //鏃犱富閿暟鎹� 鏂板
+                        saleReturnService.saveEntity(salesReturn);
+                    }
+                }
+            }
+        }
+    }
+
+
+    private SalesReturn convertSalesReturn(SalesReturn salesReturn,SalesReturn salesReturn1){
+        if (StringUtils.isNotBlank(salesReturn.getItemId()) &&
+                !salesReturn.getItemId().equals(salesReturn1.getItemId())) {
+            salesReturn1.setItemId(salesReturn.getItemId());
+        }
+
+        if (StringUtils.isNotBlank(salesReturn.getBatchNum()) &&
+                !salesReturn.getBatchNum().equals(salesReturn1.getBatchNum())) {
+            salesReturn1.setBatchNum(salesReturn.getBatchNum());
+        }
+
+        if (StringUtils.isNotBlank(salesReturn.getMaterialName()) &&
+                !salesReturn.getMaterialName().equals(salesReturn1.getMaterialName())) {
+            salesReturn1.setMaterialName(salesReturn.getMaterialName());
+        }
+
+        if (StringUtils.isNotBlank(salesReturn.getSpecsName()) &&
+                !salesReturn.getSpecsName().equals(salesReturn1.getSpecsName())) {
+            salesReturn1.setSpecsName(salesReturn.getSpecsName());
+        }
+
+        if (StringUtils.isNotBlank(salesReturn.getJzfmName()) &&
+                !salesReturn.getJzfmName().equals(salesReturn1.getJzfmName())) {
+            salesReturn1.setJzfmName(salesReturn.getJzfmName());
+        }
+
+        if (StringUtils.isNotBlank(salesReturn.getMaterialSize()) &&
+                !salesReturn.getMaterialSize().equals(salesReturn1.getMaterialSize())) {
+            salesReturn1.setMaterialSize(salesReturn.getMaterialSize());
+        }
+
+        if (StringUtils.isNotBlank(salesReturn.getOuterPackingSize()) &&
+                !salesReturn.getOuterPackingSize().equals(salesReturn1.getOuterPackingSize())) {
+            salesReturn1.setOuterPackingSize(salesReturn.getOuterPackingSize());
+        }
+
+        if (salesReturn.getGrossWeight() != null &&
+                !salesReturn.getGrossWeight().equals(salesReturn1.getGrossWeight())) {
+            salesReturn1.setGrossWeight(salesReturn.getGrossWeight());
+        }
+
+        if (salesReturn.getNetWeight() != null &&
+                !salesReturn.getNetWeight().equals(salesReturn1.getNetWeight())) {
+            salesReturn1.setNetWeight(salesReturn.getNetWeight());
+        }
+
+        if (StringUtils.isNotBlank(salesReturn.getBackTypeName()) &&
+                !salesReturn.getBackTypeName().equals(salesReturn1.getBackTypeName())) {
+            salesReturn1.setBackTypeName(salesReturn.getBackTypeName());
+        }
+
+        if (StringUtils.isNotBlank(salesReturn.getBackReason()) &&
+                !salesReturn.getBackReason().equals(salesReturn1.getBackReason())) {
+            salesReturn1.setBackReason(salesReturn.getBackReason());
+        }
+
+        if (StringUtils.isNotBlank(salesReturn.getAlloyStateName()) &&
+                !salesReturn.getAlloyStateName().equals(salesReturn1.getAlloyStateName())) {
+            salesReturn1.setAlloyStateName(salesReturn.getAlloyStateName());
+        }
+
+        if (StringUtils.isNotBlank(salesReturn.getItemRemark()) &&
+                !salesReturn.getItemRemark().equals(salesReturn1.getItemRemark())) {
+            salesReturn1.setItemRemark(salesReturn.getItemRemark());
+        }
+
+        if (StringUtils.isNotBlank(salesReturn.getOperState()) &&
+                !salesReturn.getOperState().equals(salesReturn1.getOperState())) {
+            salesReturn1.setOperState(salesReturn.getOperState());
+        }
+
+        return salesReturn1;
+    }
+    private SaleBackOrder convert(SaleBackOrder saleBackOrder,SaleBackOrder saleBackOrder1){
+        if (StringUtils.isNotBlank(saleBackOrder.getNewSalesId()) &&
+                !saleBackOrder.getNewSalesId().equals(saleBackOrder1.getNewSalesId())) {
+            saleBackOrder1.setNewSalesId(saleBackOrder.getNewSalesId());
+        }
+        if (StringUtils.isNotBlank(saleBackOrder.getDocNum()) &&
+                !saleBackOrder.getDocNum().equals(saleBackOrder1.getDocNum())) {
+            saleBackOrder1.setDocNum(saleBackOrder.getDocNum());
+        }
+        if (StringUtils.isNotBlank(saleBackOrder.getDocTime()) &&
+                !saleBackOrder.getDocTime().equals(saleBackOrder1.getDocTime())) {
+            saleBackOrder1.setDocTime(saleBackOrder.getDocTime());
+        }
+        if (StringUtils.isNotBlank(saleBackOrder.getNewAccountNo()) &&
+                !saleBackOrder.getNewAccountNo().equals(saleBackOrder1.getNewAccountNo())) {
+            saleBackOrder1.setNewAccountNo(saleBackOrder.getNewAccountNo());
+        }
+        if (StringUtils.isNotBlank(saleBackOrder.getCreatedBy()) &&
+                !saleBackOrder.getCreatedBy().equals(saleBackOrder1.getCreatedBy())) {
+            saleBackOrder1.setCreatedBy(saleBackOrder.getCreatedBy());
+        }
+        if (StringUtils.isNotBlank(saleBackOrder.getNcDepCode()) &&
+                !saleBackOrder.getNcDepCode().equals(saleBackOrder1.getNcDepCode())) {
+            saleBackOrder1.setNcDepCode(saleBackOrder.getNcDepCode());
+        }
+        if (StringUtils.isNotBlank(saleBackOrder.getUserCode()) &&
+                !saleBackOrder.getUserCode().equals(saleBackOrder1.getUserCode())) {
+            saleBackOrder1.setUserCode(saleBackOrder.getUserCode());
+        }
+        if (StringUtils.isNotBlank(saleBackOrder.getInvoiceNum()) &&
+                !saleBackOrder.getInvoiceNum().equals(saleBackOrder1.getInvoiceNum())) {
+            saleBackOrder1.setInvoiceNum(saleBackOrder.getInvoiceNum());
+        }
+        if (StringUtils.isNotBlank(saleBackOrder.getDocRemark()) &&
+                !saleBackOrder.getDocRemark().equals(saleBackOrder1.getDocRemark())) {
+            saleBackOrder1.setDocRemark(saleBackOrder.getDocRemark());
+        }
+        if (StringUtils.isNotBlank(saleBackOrder.getRcDepCode()) &&
+                !saleBackOrder.getRcDepCode().equals(saleBackOrder1.getRcDepCode())) {
+            saleBackOrder1.setRcDepCode(saleBackOrder.getRcDepCode());
+        }
+        if (StringUtils.isNotBlank(saleBackOrder.getRcLocCompCode()) &&
+                !saleBackOrder.getRcLocCompCode().equals(saleBackOrder1.getRcLocCompCode())) {
+            saleBackOrder1.setRcLocCompCode(saleBackOrder.getRcLocCompCode());
+        }
+        if (StringUtils.isNotBlank(saleBackOrder.getOperState()) &&
+                !saleBackOrder.getOperState().equals(saleBackOrder1.getOperState())) {
+            saleBackOrder1.setOperState(saleBackOrder.getOperState());
+        }
+        return saleBackOrder1;
+    }
+}
diff --git a/JavaSource/com/mandi/fendan/service/impl/SaleReturnServiceImpl.java b/JavaSource/com/mandi/fendan/service/impl/SaleReturnServiceImpl.java
new file mode 100644
index 0000000..20bde8a
--- /dev/null
+++ b/JavaSource/com/mandi/fendan/service/impl/SaleReturnServiceImpl.java
@@ -0,0 +1,36 @@
+package com.mandi.fendan.service.impl;
+
+
+import com.mandi.fendan.mapper.SaleBackOrderMapper;
+import com.mandi.fendan.mapper.SaleReturnMapper;
+import com.mandi.fendan.persist.SalesReturn;
+import com.mandi.fendan.service.SaleReturnService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+@Service
+public class SaleReturnServiceImpl implements SaleReturnService{
+    @Resource
+    private SaleReturnMapper saleReturnMapper;
+
+    @Override
+    public void saveEntity(SalesReturn salesReturn) {
+        saleReturnMapper.saveEntity(salesReturn);
+    }
+
+    @Override
+    public SalesReturn queryById(String itemId) {
+        return saleReturnMapper.queryById(itemId);
+    }
+
+    @Override
+    public void updateEntity(SalesReturn convert) {
+        saleReturnMapper.updateEntity(convert);
+    }
+
+    @Override
+    public void deleteByItemId(String itemId) {
+        saleReturnMapper.deleteByItemId(itemId);
+    }
+}

--
Gitblit v1.9.3