回写是怎么做的
package com.yonyou.ucf.mdf.app.rule;
import blade.kit.logging.Logger;
import blade.kit.logging.LoggerFactory;
import com.yonyou.base.metadata.data.UFDouble;
import com.yonyou.ucf.mdd.common.model.rule.RuleExecuteResult;
import com.yonyou.ucf.mdd.ext.bill.dto.BillDataDto;
import com.yonyou.ucf.mdd.ext.bill.rule.base.AbstractCommonRule;
import com.yonyou.ucf.mdd.ext.model.BillContext;
import com.yonyou.ucf.mdf.app.common.ResultMessage;
import com.yonyou.ucf.mdf.app.controller.BidTransmitController;
import com.yonyou.ucf.mdf.app.controller.MddBillController;
import com.yonyou.ucf.mdf.app.dao.IAMToBipDao;
import com.yonyou.ucf.mdf.app.entity.AttachmentForm;
import com.yonyou.ucf.mdf.app.exceptions.BusinessException;
import com.yonyou.ucf.mdf.app.service.IIAMToBipService;
import lombok.SneakyThrows;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.imeta.orm.base.BizObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Component("warehouseGoods")
public class WarehouseGoods extends AbstractCommonRule {
@Autowired
private IIAMToBipService iIAMToBip;
@Autowired
IIAMToBipService iIAMToBipService;
@Autowired
private IAMToBipDao iAMToBipDao;
@Autowired
JdbcTemplate jdbcTemplate;
@Autowired
IAMToBipDao iamToBipDao;
private static Logger logger = LoggerFactory.getLogger(WarehouseGoods.class);
@Override
public RuleExecuteResult execute(BillContext billContext, Map<String, Object> paramMap) throws Exception {
List<BizObject> bills = getBills(billContext, paramMap);
String billnum = billContext.getBillnum();
String fullname = billContext.getFullname();
BillDataDto bill = (BillDataDto) getParam(paramMap);
List<Map<String, Object>> data = (List<Map<String, Object>>) bill.getData();
AttachmentForm attachmentForm = new AttachmentForm();
List<AttachmentForm> lists = new ArrayList<>();
ArrayList<BigDecimal> temp = new ArrayList<>();
ArrayList<BizObject> objectlist = new ArrayList<>();
List<Map<String, Object>> list = new ArrayList<>();
for(int l=0;l<data.size();l++) {
//判断是仓库收货拉单采购到货生单回写-有来源仓库收货单的业务流
Map map=new HashMap ();
map= data.get(l);
boolean contains = map.containsKey("bizFlowName");
//判断是否有业务流名称字段,没有跳过本条数据
if (!contains){
continue;
}
//判断业务流名称字段字段是否是本业务流名称字段,不是跳过
else if(!data.get(l).get("bizFlowName").equals("有来源仓库收货单")){
continue;
}
try {
//判断单据来源是否为有来源仓库收货单
if(!StringUtils.isEmpty((String) data.get(0).get("sourcechild_id"))) {
for (int i = 0; i < data.size(); i++) {
//attachmentForm.setFdFileName((String) data.get(i).get("bizFlowName"));
//List<Map<String, Object>> b = (List<Map<String, Object>>) .get(i).get("bizFlowName");
if (data.get(i).get("bizFlowName").equals("有来源仓库收货单")) {
attachmentForm.setFdFileName((String) data.get(i).get("sourcechild_id"));
lists.add(attachmentForm);
objectlist = (ArrayList<BizObject>) data.get(0).get("receivebilldetailList");
//temp.add(objectlist.get(i).get("num"));
temp.add((BigDecimal)objectlist.get(i).get("num"));
logger.info("单据来源为有来源仓库收货单");
} else {
throw new BusinessException("保存失败,单据不是有来源的仓库收货单!");
}
}
}
String id = String.valueOf(lists.get(0).getFdFileName());
list = iamToBipDao.findByListById(id);
//回写累计数量
//这里有个问题我没看出来
for(int j=0;j<list.size();j++){
String sourcechildId = "";
String define4 = "";
String num = String.valueOf(temp.get(j));
if (list.contains(define4) == true) {
define4 = list.get(j).get("define4").toString();
sourcechildId = list.get(j).get("id").toString();
// num = String.valueOf(temp.get(j));
iamToBipDao.update(num, sourcechildId);
logger.error("回写成功");
} else {
//在这里会直接跳到 logger.error("生单失败!" + e);
BigDecimal bignum1 = new BigDecimal(num);
BigDecimal bignum2 = new BigDecimal(define4);
String amount = bignum1.add(bignum2).toString();
int result = amount.compareTo(num);
if (result >= 0) {
iamToBipDao.updates(amount, sourcechildId);
logger.error("回写成功");
} else {
logger.error("生单失败,超过最大收货数量!");
throw new BusinessException("生单失败,超过最大收货数量!");
}
}
}
}catch (Exception e) {
logger.error("生单失败!" + e);
throw new BusinessException("生单失败:"+e);
}
}
return new RuleExecuteResult();
}
}