package psdi.app.iface.srm;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import psdi.mbo.MboRemote;
import psdi.mbo.MboSetRemote;
import psdi.server.MXServer;

import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 数据方向 EAM-->SRM
 * 请求方式： SRM-->EAM
 * @author liuxingqiang
 */
@Path("/updateinfo")
public class Eam2SrmService {
    /**
     * SRM将预验收、终验收的相关信息回传到EAM
     * srm通过触发器实现
     * @param received
     * @return
     */
    @POST
    @Path("/acceptStatus")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject SRM_TO_EAM_EXFCHECK_STATUS(String received) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        List<Map<String, Object>> mapList = new ArrayList<Map<String, Object>>();
        JSONObject returnDate = new JSONObject();
        JSONObject jsonObject = JSONObject.parseObject(received);
//        JSONObject dataObj = jsonObject.getJSONObject("REQUEST").getJSONObject("REQUEST_DATA").getJSONObject("Head");
        JSONArray dataArray = JSONArray.parseArray(jsonObject.getString("IT_REQUEST"));
//        JSONArray dataArray = JSONArray.parseArray(jsonStr);//获取list
        try {
            ArrayList<String> sqlList = new ArrayList<>();
            for (int i = 0; i < dataArray.size(); i++) {
                MboSetRemote prlineSet = MXServer.getMXServer().getMboSet("PRLINE",MXServer.getMXServer().getSystemUserInfo());
                Map<String, Object> map = new HashMap<String, Object>();
                JSONObject jsonObj = (JSONObject) dataArray.get(i);//获取每个json对象
                String UDPRNUM = (String) jsonObj.get("PRNUM");//工厂请购单号
                String PRLINENUM = (String) jsonObj.get("PRLINENUUM");//工厂请购单行号
                String PROJECTNUM = (String) jsonObj.get("PROJECTNUM");//项目立项编号
                String PONUM = (String) jsonObj.get("PONUM");//采购订单号
                String POLINENUM = (String) jsonObj.get("POLINENUM");//采购订单行号
                String SUPPLY = (String) jsonObj.get("SUPPLY");//供应商
                String CHECKTYPE = (String) jsonObj.get("CHECKTYPE");//验收类型
                String YSSTATUS = (String) jsonObj.get("STATUS");//验收状态
                String ISPASS = (String) jsonObj.get("ISPASS");//是否合格
                String RESULT = (String) jsonObj.get("RESULT");//验收结论
                String FINISHDATE = (String) jsonObj.get("FINISHDATE");//检验日期
                String CHECKNUM = (String) jsonObj.get("CHECKNUM");//检验单号
                prlineSet.setWhere("prnum=(select prnum from pr where udprnum='"+UDPRNUM+"') and prlinenum='"+PRLINENUM+"'");
                prlineSet.reset();
                if(prlineSet!=null && !prlineSet.isEmpty()){
                    if(prlineSet.getMbo(0)!=null){
                        MboRemote prlineMbo = prlineSet.getMbo(0);
                        prlineMbo.setValue("PROJECTNUM",PROJECTNUM,2L);
                        prlineMbo.setValue("UDPONUM",PONUM,2L);
                        prlineMbo.setValue("POLINENUM",Integer.valueOf(Integer.parseInt(POLINENUM)),2L);//2L表示：强制插入
                        prlineMbo.setValue("SUPPLY",SUPPLY,2L);
                        prlineMbo.setValue("CHECKTYPE",CHECKTYPE,2L);
                        prlineMbo.setValue("YSSTATUS",YSSTATUS,2L);
                        prlineMbo.setValue("ISPASS",ISPASS,2L);
                        prlineMbo.setValue("RESULT",RESULT,2L);
                        prlineMbo.setValue("FINISHDATE",FINISHDATE,2L);
                        prlineMbo.setValue("CHECKNUM",CHECKNUM,2L);
                        prlineSet.save();
                        prlineSet.close();
                    }
                }
            }
            returnDate.put("EX_TYPE", "S");
            returnDate.put("EX_MESSAGE", "success");
        }catch (Exception e){
            returnDate.put("EX_TYPE", "E");
            returnDate.put("EX_MESSAGE", "failure");
        }finally {
            return returnDate;
        }
    }

}