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
|
|
}
|
|
}
|