package psdi.app.iface.mobile;

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.Date;

/**
 * 车间请购需求池
 * createBy liuxq  2023-8-24
 */
@Path("/udPrDept")
public class UdPRDeptAppService {

    /**
     * 数据保存接口
     * @param received
     * @return
     */
    @POST
    @Path("/saveData")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject SaveData(String received) {
        //定义返回对象
        JSONObject returnDate = new JSONObject();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            //接收app数据
            JSONObject jsonObject = JSONObject.parseObject(received);
            Integer PRID = jsonObject.getInteger("PRID");//表ID
            String PRNUM = jsonObject.getString("PRNUM");//
            String WONUM = jsonObject.getString("UDPRNUM");//
            String STATUS = jsonObject.getString("STATUS");//状态
            String DESCRIPTION = jsonObject.getString("DESCRIPTION");//领料申请单描述- EAM+人员名称+时间
            String REMARKS = jsonObject.getString("REMARKS");//备注
            String CREATEBY = jsonObject.getString("CREATEBY");//创建人
            String CREATEDATEStr = jsonObject.getString("CREATEDATE");//创建时间---北京时间
            Date CREATEDATE = sdf.parse(CREATEDATEStr);
            String ORGID = jsonObject.getString("ORGID");//组织
            String SITEID = jsonObject.getString("SITEID");//地点
            //获取部门及部门主管
            String DEPARTMENT = "";
            MboSetRemote personSet = MXServer.getMXServer().getMboSet("PERSON",MXServer.getMXServer().getSystemUserInfo());
            personSet.setWhere(" personid='"+CREATEBY+"'");
            personSet.reset();
            if(personSet!=null && !personSet.isEmpty()){
                MboRemote personMbo =  personSet.getMbo(0);
                DEPARTMENT = personMbo.getString("DEPARTMENT");//部门
            }
            //主管
            String DIRECTOR = "";
            if(DEPARTMENT!=null && !"".equals(DEPARTMENT)){
                MboSetRemote deptSet = MXServer.getMXServer().getMboSet("DEPT",MXServer.getMXServer().getSystemUserInfo());
                deptSet.setWhere(" DEPTNUM='"+DEPARTMENT+"'");
                MboRemote deptMbo =  deptSet.getMbo(0);
                DIRECTOR = deptMbo.getString("DIRECTOR");//部门主管
            }
            MboSetRemote PRSet = MXServer.getMXServer().getMboSet("PR",MXServer.getMXServer().getSystemUserInfo());
            PRSet.setWhere(" PRID="+PRID+"");
            PRSet.reset();
            MboRemote prMbo = null;
            if(PRSet!=null && !PRSet.isEmpty()){
                //编辑
                prMbo = PRSet.getMbo(0);
            }else{
                //新增
                prMbo = PRSet.add();
                PRID = prMbo.getInt("PRID");
                PRNUM = prMbo.getString("PRNUM");
                WONUM = "EAM"+ PRID;//领料单编号
                STATUS = "WAPPR";
            }
            prMbo.setValue("UDPRNUM", WONUM,2L);//车间需求申请池-申请单号
            prMbo.setValue("DESCRIPTION",DESCRIPTION,2L);//车间需求申请池-申请单号
            prMbo.setValue("REQUESTEDBY",CREATEBY,2L);//申请人
            prMbo.setValue("CHANGEBY",CREATEBY,2L);//申请人
            prMbo.setValue("APPNAME", "UDPRTB");//应用标识
            prMbo.setValue("STATUS", "WAPPR",2L);//默认状态
            prMbo.setValue("STATUSDATE", CREATEDATE,2L);//状态日期
            prMbo.setValue("ISSUEDATE", CREATEDATE,2L);//申请日期
            prMbo.setValue("ORGID",ORGID,2L);//组织
            prMbo.setValue("SITEID",SITEID,2L);//地点
            //保存
            prMbo.getThisMboSet().save(11L);
            returnDate.put("PRID",PRID);//返回前端刷新页面
            returnDate.put("PRNUM",PRNUM);//返回前端刷新页面
            returnDate.put("errcode","200");
            returnDate.put("errmsg","save success");
        }catch (Exception e){
            System.out.println("------faileMessage----->"+e.getMessage());
            returnDate.put("errcode","500");
            returnDate.put("errmsg","save failure");
        }finally {
            return returnDate;
        }
    }

    /**
     * 主表数据删除 接口
     * @param received
     * @return
     */
    @POST
    @Path("/deleteData")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject DeleteData(String received) {
        //定义返回对象
        JSONObject returnDate = new JSONObject();
        try {
            //接收app数据
            JSONObject jsonObject = JSONObject.parseObject(received);
            String PRNUM = jsonObject.getString("PRNUM");//主表ID
            MboSetRemote UDREPORTSet = MXServer.getMXServer().getMboSet("PR",MXServer.getMXServer().getSystemUserInfo());
            UDREPORTSet.setWhere(" PRNUM='"+PRNUM+"'");
            UDREPORTSet.reset();
            MboRemote mbo = UDREPORTSet.getMbo(0);//
            mbo.delete();//相当于delete语句，结束后，还得保存
            mbo.getThisMboSet().save();

            //删除子表数据
            MboSetRemote UDLLDLINESet = MXServer.getMXServer().getMboSet("PRLINE",MXServer.getMXServer().getSystemUserInfo());
            UDLLDLINESet.setWhere(" PRNUM='"+PRNUM+"'");//int 类型
            UDLLDLINESet.reset();
            UDLLDLINESet.deleteAll();
            UDLLDLINESet.save();

            returnDate.put("errcode","200");
            returnDate.put("errmsg","delete success");
        }catch (Exception e){
            System.out.println("------faileMessage----->"+e.getMessage());
            returnDate.put("errcode","500");
            returnDate.put("errmsg","delete failure");
        }finally {
            return returnDate;
        }
    }

    /**
     * 子表数据保存-接口
     * @param received
     * @return
     */
    @POST
    @Path("/saveLineData")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject saveLineData(String received) {
        //定义返回对象
        JSONObject returnDate = new JSONObject();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            //接收app数据
            JSONObject jsonObject = JSONObject.parseObject(received);
            Integer PRLINEID = jsonObject.getInteger("PRLINEID");//表ID
            String PRNUM = jsonObject.getString("PRNUM");//父级ID
            Integer PRLINENUM = jsonObject.getInteger("PRLINENUM");//行号
            String ITEMNUM = jsonObject.getString("ITEMNUM");//物料编号
            String DESCRIPTION = jsonObject.getString("DESCRIPTION");//物料描述
            String CREATEBY = jsonObject.getString("CREATEBY");//创建人
            String ORDERQTYStr = jsonObject.getString("ORDERQTY");//申请数量
            ORDERQTYStr = (ORDERQTYStr==null || "".equals(ORDERQTYStr))?"0":ORDERQTYStr;
            Double ORDERQTY = Double.parseDouble(ORDERQTYStr);
            String ORDERUNIT = jsonObject.getString("ORDERUNIT");//申请单位
            String REMARKS = jsonObject.getString("REMARKS");//备注
            String ORGID = jsonObject.getString("ORGID");//组织
            String SITEID = jsonObject.getString("SITEID");//地点

            MboSetRemote PRSet = MXServer.getMXServer().getMboSet("PR",MXServer.getMXServer().getSystemUserInfo());
            PRSet.setWhere(" PRNUM='"+PRNUM+"'");
            PRSet.reset();
            MboRemote prMbo = null;
            if(PRSet!=null && !PRSet.isEmpty()){
                prMbo = PRSet.getMbo(0);
            }
            MboSetRemote CJprlineSET = prMbo.getMboSet("PRLINE");
            MboSetRemote UDMaterSet = MXServer.getMXServer().getMboSet("PRLINE",MXServer.getMXServer().getSystemUserInfo());
            UDMaterSet.setWhere(" PRLINEID="+PRLINEID+"");//int 类型
            UDMaterSet.reset();
            MboRemote prlineMbo = null;
            if(UDMaterSet!=null && !UDMaterSet.isEmpty()){
                //编辑
                prlineMbo = UDMaterSet.getMbo(0);
            }else{
                //新增
                prlineMbo = CJprlineSET.addAtEnd(11L);
                PRLINEID = prlineMbo.getInt("PRLINEID");
            }
            prlineMbo.setValue("PRNUM",PRNUM,11L);//父级
            prlineMbo.setValue("SITEID",SITEID,11L);
            prlineMbo.setValue("ORGID",ORGID,11L);
            prlineMbo.setValue("PRLINENUM",PRLINENUM,11L);//行号
            prlineMbo.setValue("ITEMNUM",ITEMNUM,11L);
            prlineMbo.setValue("ORDERQTY",ORDERQTY,11L);
            prlineMbo.setValue("ORDERUNIT",ORDERUNIT,11L);
            prlineMbo.setValue("REMARKS",REMARKS,11L);
            //prline要求的默认值
            prlineMbo.setValue("CONVERSION",1,11L);
            prlineMbo.setValue("ISSUE",0,11L);//11L跳过验证
            prlineMbo.setValue("LOADEDCOST",0,11L);
            prlineMbo.setValue("LINETYPE","ITEM",11L);
            prlineMbo.setValue("ENTEREDASTASK",0,11L);
            prlineMbo.setValue("TAX4",0,11L);
            prlineMbo.setValue("ENTERBY",CREATEBY,11L);
            prlineMbo.setValue("ENTERDATE",new Date(),11L);
            prlineMbo.setValue("TAXEXEMPT",0,11L);
            prlineMbo.setValue("LANGCODE","ZH",11L);
            prlineMbo.setValue("MKTPLCITEM",0,11L);
            prlineMbo.setValue("INSPECTIONREQUIRED",0,11L);
            prlineMbo.setValue("LINECOST",0,11L);
            prlineMbo.setValue("CHARGESTORE",0,11L);
            prlineMbo.setValue("TAX5",0,11L);
            prlineMbo.setValue("RECEIPTREQD",1,11L);
            prlineMbo.setValue("TAX3",0,11L);
            prlineMbo.setValue("TAX2",0,11L);
            prlineMbo.setValue("CONSIGNMENT",0,11L);
            prlineMbo.setValue("ISDISTRIBUTED",0,11L);
            prlineMbo.setValue("CONVERTTORFQ",0,11L);
            prlineMbo.setValue("PRORATESERVICE",0,11L);
            prlineMbo.setValue("CONVERTTOCONTRACT",0,11L);
            prlineMbo.setValue("ISPASS","0",11L);
            prlineMbo.setValue("TAX1",0,11L);
            prlineMbo.setValue("RESTYPE","AUTOMATIC",11L);
            prlineMbo.setValue("ITEMSETID","SUNDASET",11L);
            //保存
            prlineMbo.getThisMboSet().save(11L);
            returnDate.put("PRLINEID",PRLINEID);//返回前端刷新页面
            returnDate.put("errcode","200");
            returnDate.put("errmsg","save success");
        }catch (Exception e){
            System.out.println("------faileMessage----->"+e.getMessage());
            returnDate.put("errcode","500");
            returnDate.put("errmsg","save failure");
        }finally {
            return returnDate;
        }
    }

    /**
     * 子表删除 - 接口
     * @param received
     * @return
     */
    @POST
    @Path("/deleteLineData")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject deleteLineData(String received) {
        //定义返回对象
        JSONObject returnDate = new JSONObject();
        try {
            //接收app数据
            JSONObject jsonObject = JSONObject.parseObject(received);
            Integer PRLINEID = jsonObject.getInteger("PRLINEID");//子表ID
            MboSetRemote UDLLDLINESet = MXServer.getMXServer().getMboSet("PRLINE",MXServer.getMXServer().getSystemUserInfo());
            UDLLDLINESet.setWhere(" PRLINEID="+PRLINEID+"");//int 类型
            UDLLDLINESet.reset();
            MboRemote mbo = UDLLDLINESet.getMbo(0);//
            mbo.delete();//相当于delete语句，结束后，还得保存
            mbo.getThisMboSet().save();
            returnDate.put("errcode","200");
            returnDate.put("errmsg","delete success");
        }catch (Exception e){
            System.out.println("------faileMessage----->"+e.getMessage());
            returnDate.put("errcode","500");
            returnDate.put("errmsg","delete failure");
        }finally {
            return returnDate;
        }
    }



}
