P15GEN2\59518
2024-05-29 d4210c7c4b04abde20037ea8aa0f54ef8a2649aa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
package book.stock;
 
import foundation.action.ActionContext;
import foundation.action.ActionProvider;
import foundation.dao.Filter;
import foundation.data.entity.Entity;
import foundation.data.entity.EntitySet;
import foundation.data.object.DataObject;
import foundation.persist.NamedSQL;
import foundation.persist.SQLRunner;
import foundation.util.Util;
 
public class WriterBack extends ActionProvider {
    
    private NamedSQL namedSQL = null;
    private DataObject dataObject = null;
    private Filter filter = null;
    private EntitySet entitySet = null;
    private Entity entity = null;
 
    @Override
    public void exec(ActionContext context, String method) throws Exception {
        if ("refreshOrderReceived".equals(method)) {
            refreshOrderReceived();
        }
        else if ("checkExcessDelivery".equalsIgnoreCase(method)) {
            checkExcessDelivery();
        }
        else if ("checkOrderDirectDelivery".equalsIgnoreCase(method)) {
            checkOrderDirectDelivery();
        }
    }
    
    private void checkOrderDirectDelivery() {
        String deliver_id = dataReader.getString("id");
        if (Util.isEmpty(deliver_id)) {
            return;
        }
        
        try {
             dataObject = DataObject.getInstance("so_delivery");
             filter = new Filter();
             filter.add("id", deliver_id);
             filter.add("ifnull(so_delivery.customer_id, '')", "");
             entity = dataObject.getTableEntity(filter);
            
             if (entity != null && !entity.isEmpty()) {
                 refreshOrderReceived();
                 entity.set("state_code", "Received");
                 entity.set("state_name", "已收货");
                 dataObject.updateEntity(entity);
                 terminateTask(context);
                 return;
             }
        } catch(Exception e) {
             e.printStackTrace();
        }        
    }
    
    private void checkExcessDelivery() {
        String deliver_id = dataReader.getString("id");
        if (Util.isEmpty(deliver_id)) {
            return;
        }
        
        try {
             namedSQL = NamedSQL.getInstance("checkExcessDelivery");
             namedSQL.setParam("id", deliver_id);
             entitySet  = SQLRunner.getEntitySet(namedSQL);
             
             if (entitySet != null && !entitySet.isEmpty()) {
                 dataWriter.reportOneError("订单收货", "超量发货,不能收货,请联系商务");
                 terminateTask(context);
                 return;
             }
        } catch(Exception e) {
             e.printStackTrace();
        }        
    }
 
    public void refreshOrderReceived() {
        String deliver_id = dataReader.getString("id");
        if (Util.isEmpty(deliver_id)) {
            return;
        }
        
        try {
             namedSQL = NamedSQL.getInstance("getDeliveryById");
             namedSQL.setParam("id", deliver_id);
             entity = SQLRunner.getEntity(namedSQL);
             
             if ("Received".equalsIgnoreCase(entity.getString("state_code"))) {
                 dataWriter.reportOneError("订单收货", "发货单已收货,请检查单据状态");
                 terminateTask(context);
                 return;
             }
            
             //SQLRunner.beginTrans();
             //根据收货单更新订单明细数量
             namedSQL = NamedSQL.getInstance("refreshOrderDetailQtyReceived");
             namedSQL.setParam("id", deliver_id);
             SQLRunner.execSQL(namedSQL);
             
             //根据收货单更新订单主体数量
             namedSQL = NamedSQL.getInstance("refreshOrderQtyReceived");
             namedSQL.setParam("id", deliver_id);
             SQLRunner.execSQL(namedSQL);    
             
             //根据收货单更新订单状态
             namedSQL = NamedSQL.getInstance("refreshOrderReceivedState");
             namedSQL.setParam("id", deliver_id);
             SQLRunner.execSQL(namedSQL);
             
             //SQLRunner.commit();
        } catch(Exception e) {
             e.printStackTrace();
//             try {
//                  SQLRunner.rollback();
//            } catch (Exception e1) {
//                  e1.printStackTrace();
//            }
        }
 
    }
 
    @Override
    protected void publishMethod() {
        // TODO Auto-generated method stub
        
    }
 
}