为您推荐:
精华内容
最热下载
问答
  • 5星
    9.35MB weixin_44042579 2020-12-19 12:51:59
  • 5星
    8.51MB GZXGYZ 2021-08-16 10:12:36
  • 5星
    25.86MB tangyang8942 2021-06-12 17:46:24
  • 5星
    14.4MB qq_37740841 2021-08-07 21:45:39
  • 5星
    222KB weixin_39709134 2021-08-03 16:04:18
  • ^*今天将为大家分析一个基于web的java汽车销售系统,系统具有对用户信息、汽车基本信息、员工信息、客户信息、供应商信息、仓库信息、库存信息、汽车入库信息、汽车销售信息进行全部查询、指定查询、添加、修改和...

    每天记录学习,每天会有好心情。*^_^*

    今天将为大家分析一个基于web的java汽车销售系统,系统具有对用户信息、汽车基本信息、员工信息、客户信息、供应商信息、仓库信息、库存信息、汽车入库信息、汽车销售信息进行全部查询、指定查询、添加、修改和删除的功能。

    基于web的java汽车销售系统项目使用框架为SSM(MYECLIPSE),选用开发工具为MYECLIPSE。基于web的java汽车销售系统为一个 后台项目。

    为了完成基于web的java汽车销售系统,我们首先需要对该系统进行需求分析。一个基于web的java汽车销售系统应包含用户角色有管理员、用户。为了能让用户顺利登陆系统完成相关操作,需要为每种登陆角色设置账户和密码字段。

    总结得出基于web的java汽车销售系统项目所有数据为:管理员(admin)、用户(yonghu)、员工(yuangong)、客户(kehu)、汽车(qiche)

    基于web的java汽车销售系统之管理员表

    字段名 | 类型 | 属性 |描述

    id| INT(11) | PRIMARY KEY |管理员id

    username| VARCHAR(255) | |账号

    password| VARCHAR(255) | | 密码

    基于web的java汽车销售系统之用户表

    字段名 | 类型 | 属性 |描述

    id| INT(11) | PRIMARY KEY |用户id

    username| VARCHAR(255) | |账号

    password| VARCHAR(255) | |密码

    huzhu| VARCHAR(255) | |户主

    chexing| VARCHAR(255) | |车型

    jiage| VARCHAR(255) | | 价格

    基于web的java汽车销售系统之员工表

    字段名 | 类型 | 属性 |描述

    id| INT(11) | PRIMARY KEY |员工id

    xingming| VARCHAR(255) | |姓名

    nianling| VARCHAR(255) | |年龄

    xingbie| VARCHAR(255) | |性别

    zhiwei| VARCHAR(255) | |职位

    gongzi| VARCHAR(255) | | 工资

    基于web的java汽车销售系统之客户表

    字段名 | 类型 | 属性 |描述

    id| INT(11) | PRIMARY KEY |客户id

    xingming| VARCHAR(255) | |姓名

    nianling| VARCHAR(255) | |年龄

    xingbie| VARCHAR(255) | |性别

    chexing| VARCHAR(255) | |车型

    nianxian| VARCHAR(255) | |年限

    jiage| VARCHAR(255) | | 价格

    基于web的java汽车销售系统之汽车表

    字段名 | 类型 | 属性 |描述

    id| INT(11) | PRIMARY KEY |汽车id

    chexing| VARCHAR(255) | |车型

    pinpai| VARCHAR(255) | |品牌

    jiage| VARCHAR(255) | | 价格

    SET FOREIGN_KEY_CHECKS=0;------------------------------

    ------------------------------

    --Table structure for ggjywebdjavaqcxsxt

    ------------------------------

    DROP TABLE IF EXISTS`t_admin`;CREATE TABLE `t_admin` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '管理员id',`username` VARCHAR(255) DEFAULT NULL COMMENT '账号',`password` VARCHAR(255) DEFAULT NULL COMMENT '密码',PRIMARY KEY(`id`)

    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='管理员';------------------------------

    DROP TABLE IF EXISTS`t_yonghu`;CREATE TABLE `t_yonghu` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',`username` VARCHAR(255) DEFAULT NULL COMMENT '账号',`password` VARCHAR(255) DEFAULT NULL COMMENT '密码',`huzhu` VARCHAR(255) DEFAULT NULL COMMENT '户主',`chexing` VARCHAR(255) DEFAULT NULL COMMENT '车型',`jiage` VARCHAR(255) DEFAULT NULL COMMENT '价格',PRIMARY KEY(`id`)

    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户';------------------------------

    DROP TABLE IF EXISTS`t_yuangong`;CREATE TABLE `t_yuangong` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '员工id',`xingming` VARCHAR(255) DEFAULT NULL COMMENT '姓名',`nianling` VARCHAR(255) DEFAULT NULL COMMENT '年龄',`xingbie` VARCHAR(255) DEFAULT NULL COMMENT '性别',`zhiwei` VARCHAR(255) DEFAULT NULL COMMENT '职位',`gongzi` VARCHAR(255) DEFAULT NULL COMMENT '工资',PRIMARY KEY(`id`)

    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='员工';------------------------------

    DROP TABLE IF EXISTS`t_kehu`;CREATE TABLE `t_kehu` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '客户id',`xingming` VARCHAR(255) DEFAULT NULL COMMENT '姓名',`nianling` VARCHAR(255) DEFAULT NULL COMMENT '年龄',`xingbie` VARCHAR(255) DEFAULT NULL COMMENT '性别',`chexing` VARCHAR(255) DEFAULT NULL COMMENT '车型',`nianxian` VARCHAR(255) DEFAULT NULL COMMENT '年限',`jiage` VARCHAR(255) DEFAULT NULL COMMENT '价格',PRIMARY KEY(`id`)

    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='客户';------------------------------

    DROP TABLE IF EXISTS`t_qiche`;CREATE TABLE `t_qiche` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '汽车id',`chexing` VARCHAR(255) DEFAULT NULL COMMENT '车型',`pinpai` VARCHAR(255) DEFAULT NULL COMMENT '品牌',`jiage` VARCHAR(255) DEFAULT NULL COMMENT '价格',PRIMARY KEY(`id`)

    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='汽车';

    添加用户模块:

    系统中存在添加用户功能,通过点击添加用户可以跳转到该功能模块,在该功能模块中,填写对应的用户信息。用户包含信息账号,密码,户主,车型,价格,填写完所有信息后,通过post方法将数据提交到tianjiayonghu.action中,该地址将在服务器中yonghuController类中的tianjiayonghuact方法中进行响应。响应结果为,获取所有的用户信息,封装一个yonghu类,使用yonghuController类中定义的yonghudao的insert方法,将用户数据插入到数据库的yonghu表中。并给出用户提示信息,添加用户成功,将该信息保存到request的message中,该信息将在页面中进行展示。该部分核心代码如下:

    通过yonghudao的insert方法将页面传输的用户添加到数据库中 yonghudao.insert(yonghu);

    将添加用户成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "添加用户成功");

    返回用户管理界面

    return "forward:/tianjiayonghu.action";

    查询用户模块:

    在后台yonghuguanli方法中,通过selectByexample方法获取所有的数据信息。将其保存到request中,在页面中通过foreach方法

    进行循环展示到table中。完成用户查询操作。具体代码如下:

    生成用户样例类,通过example定义查询条件 YonghuExample example = new YonghuExample();

    通过yonghudao的selectByExample方法查询出所有的用户信息 List yonghuall = yonghudao.selectByExample(example);

    将用户信息,保存到request中,在页面通过foreach方法进行展示 request.setAttribute("yonghuall", yonghuall);

    返回用户管理界面

    return "forward:/yonghuguanli.action";

    修改用户模块:

    在页面完成用户的修改信息填写后,将该部分数据传入xiugaiyonghu.action地址,并通过post进行提交。提交后在yonghuController中通过xiugaiyonghu进行接收,将所有字段封装为一个用户实体。并将该实体传入yonghudao中的updateByPrimaryKeySelective方法中,在该方法中定义了通过用户id更新其余用户的字段,该部分字段包括账号,密码,户主,车型,价格,该部分核心代码如下所示:

    通过yonghudao的修改方法根据id修改对应的用户 yonghudao.updateByPrimaryKeySelective(yonghu);

    将修改用户成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "修改用户信息成功");

    返回用户管理界面

    return "forward:/yonghuguanli.action";

    删除用户模块:

    在管理页面中,点击删除。页面将通过a标签的href属性,使用get方法将该用户

    的id上传到服务器中,在服务器中通过yonghuController类中的shanchuyonghu进行接收,之后调用yonghuMapper中的deleteByPrimaryKey方法根据ID进行删除。将删除信息保存到request的message中,在页面给出用户删除成功的提示信息,该部分核心代码如下:

    通过yonghudao的删除方法根据id删除对应的用户 yonghudao.deleteByPrimaryKey(id);

    将删除用户成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "删除用户成功");

    返回用户管理界面

    return "forward:/yonghuguanli.action";

    展开全文
    weixin_35802571 2021-03-15 13:59:12
  • 最近项目需要开发一个排行榜功能,根据订单金额进行排名,同金额排名相同,不同则跳过,序列递增。 技术实现 MySQL 通过SQL语句也能实现,不过SQL过于复杂,也不好维护。 SELECT CASE WHEN @pre = final_score...

    前言

    最近项目需要开发一个排行榜功能,根据订单金额进行排名,同金额排名相同,不同则跳过,序列递增。

    技术实现

    • MySQL
      通过SQL语句也能实现,不过SQL过于复杂,也不好维护。
    SELECT
    CASE
                    
            WHEN
                    @pre = final_score THEN
                            @pic + 0 
                            WHEN @pre := final_score THEN
                            @pic := @pic + 1 ELSE @pic := @pic + 1 
                    END AS rank,
                    rr.id registrationRecordId,
                    rr.final_score AS number,
                    us.userName,
                    us.id userId,
                    us.avatarImageURL headPortrait,
                    CAST( p.`projectName` AS CHAR CHARSET UTF8 ) AS projectName,
                    p.thumbnailURL,
                    p.id projectId 
            FROM
                    registration_record rr
                    INNER JOIN `user` us ON rr.user_id = us.id
                    INNER JOIN project p ON p.id = rr.project_id,(
                    SELECT
                            @pre := NULL,
                            @pic := 0 
                    ) AS init 
            WHERE
                    rr.final_score IS NOT NULL 
                    AND rr.competition_id = 41 
    ORDER BY
            rr.final_score DESC
    

    SQL类似这样,光从可读性就能劝退很多同学了。

    • Redis
      Redis也能实现排行榜功能,主要通过zset中的分数特性来实现,不过对于我的业务不太适合
    • SQL+Java代码
      通过SQL中的order by将查询的List根据某字段进行排好序,再将此List通过Java代码实现最终排行榜功能(推荐使用)
    //伪SQL
    select 
    	a.schoolId
    	a.schoolName,
    	sum(a.amount)as count
    	from a
    	group by a.schoolId
    	order by count desc
    

    将需要排序的集合通过某字段排好序
    Java代码

    /**
         * 成交金额排名
         *
         * @param amountRankList
         * @return
         */
        private static List<AmountRankVO> amountRank(List<AmountRankVO> amountRankList) {
            amountRankList.sort((s1, s2) -> -Float.compare(s1.getCount(), s2.getCount()));
            int index = 0;
            int count = 0;
    
            int tmpSize = 0;
            Float lastCount = -1.00f;
            List<AmountRankVO> tmpAmountRankList = new ArrayList<>();
            for (int i = 0; i < amountRankList.size(); i++) {
                AmountRankVO amountRankVO = amountRankList.get(i);
                if (Double.compare(lastCount, amountRankVO.getCount()) != 0) {
                    lastCount = amountRankVO.getCount();
                    index = index + 1 + count;
                    count = 0;
                }
                amountRankVO.setSequence(index);
                //相同并列,不同则跳过,序号一次递增
                if (tmpSize > 0) {
                    if (amountRankVO.getCount() < amountRankList.get(tmpSize - 1).getCount()) {
                        amountRankVO.setSequence(tmpSize + 1);
                        index = tmpSize + 1;
                    }
                }
                tmpAmountRankList.add(amountRankVO);
                tmpSize = tmpAmountRankList.size();
            }
            return tmpAmountRankList;
        }
    

    如果想实现同金额相同排名,不出现序列自增,只需注释下面代码:

     //相同并列,不同则跳过,序号一次递增
                if (tmpSize > 0) {
                    if (amountRankVO.getCount() < amountRankList.get(tmpSize - 1).getCount()) {
                        amountRankVO.setSequence(tmpSize + 1);
                        index = tmpSize + 1;
                    }
                }
    

    最后

    最后我们看一下具体实现的效果,类似功能比如成绩排名,销量排名等都能适用
    在这里插入图片描述

    展开全文
    qq_40553042 2021-06-05 12:06:42
  • *^_^*今天将为大家分析一个基于web的java汽车零件销售系统,采用当前非常流行的B/S体系结构,以JAVA作为开发技术,主要依赖SSM技术框架,mysql数据库建立本系统。基于web的java汽车零件销售系统项目使用框架为SSM...

    每天记录学习,每天会有好心情。*^_^*

    今天将为大家分析一个基于web的java汽车零件销售系统,采用当前非常流行的B/S体系结构,以JAVA作为开发技术,主要依赖SSM技术框架,mysql数据库建立本系统。

    基于web的java汽车零件销售系统项目使用框架为SSM(MYECLIPSE),选用开发工具为MYECLIPSE。基于web的java汽车零件销售系统为一个 后台项目。

    为了完成基于web的java汽车零件销售系统,我们首先需要对该系统进行需求分析。一个基于web的java汽车零件销售系统应包含用户角色有管理员、用户。为了能让用户顺利登陆系统完成相关操作,需要为每种登陆角色设置账户和密码字段。

    订单联系了商品,通过关联使得商品之间建立了联系,加强了系统的实用性和便捷性。增强了用户体验。他们之间的关联关系是订单的联系方式与商品的mingcheng字段对应

    总结得出基于web的java汽车零件销售系统项目所有数据为:管理员(admin)、用户(yonghu)、商品(shangpin)、订单(dingdan)

    基于web的java汽车零件销售系统之管理员表

    字段名 | 类型 | 属性 |描述

    id| INT(11) | PRIMARY KEY |管理员id

    username| VARCHAR(255) | |账号

    password| VARCHAR(255) | | 密码

    基于web的java汽车零件销售系统之用户表

    字段名 | 类型 | 属性 |描述

    id| INT(11) | PRIMARY KEY |用户id

    xingming| VARCHAR(255) | |姓名

    nianling| VARCHAR(255) | |年龄

    xingbie| VARCHAR(255) | |性别

    zhiye| VARCHAR(255) | |职业

    quanxian| VARCHAR(255) | |权限

    username| VARCHAR(255) | |账号

    password| VARCHAR(255) | | 密码

    基于web的java汽车零件销售系统之商品表

    字段名 | 类型 | 属性 |描述

    id| INT(11) | PRIMARY KEY |商品id

    mingcheng| VARCHAR(255) | |名称

    zhonglei| VARCHAR(255) | |种类

    leixing| VARCHAR(255) | |类型

    jiage| VARCHAR(255) | |价格

    shuliang| VARCHAR(255) | | 数量

    基于web的java汽车零件销售系统之订单表

    字段名 | 类型 | 属性 |描述

    id| INT(11) | PRIMARY KEY |订单id

    xingming| VARCHAR(255) | |姓名

    lianxifangshi| VARCHAR(255) | |联系方式

    mingcheng| VARCHAR(255) | |名称

    shuliang| VARCHAR(255) | |数量

    zhonglei| VARCHAR(255) | |种类

    leixing| VARCHAR(255) | |类型

    jiage| VARCHAR(255) | |价格

    shouhuodizhi| VARCHAR(255) | | 收货地址

    SET FOREIGN_KEY_CHECKS=0;------------------------------

    ------------------------------

    --Table structure for ggjywebdjavaqcljxsxt

    ------------------------------

    DROP TABLE IF EXISTS`t_admin`;CREATE TABLE `t_admin` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '管理员id',`username` VARCHAR(255) DEFAULT NULL COMMENT '账号',`password` VARCHAR(255) DEFAULT NULL COMMENT '密码',PRIMARY KEY(`id`)

    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='管理员';------------------------------

    DROP TABLE IF EXISTS`t_yonghu`;CREATE TABLE `t_yonghu` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',`xingming` VARCHAR(255) DEFAULT NULL COMMENT '姓名',`nianling` VARCHAR(255) DEFAULT NULL COMMENT '年龄',`xingbie` VARCHAR(255) DEFAULT NULL COMMENT '性别',`zhiye` VARCHAR(255) DEFAULT NULL COMMENT '职业',`quanxian` VARCHAR(255) DEFAULT NULL COMMENT '权限',`username` VARCHAR(255) DEFAULT NULL COMMENT '账号',`password` VARCHAR(255) DEFAULT NULL COMMENT '密码',PRIMARY KEY(`id`)

    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户';------------------------------

    DROP TABLE IF EXISTS`t_shangpin`;CREATE TABLE `t_shangpin` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '商品id',`mingcheng` VARCHAR(255) DEFAULT NULL COMMENT '名称',`zhonglei` VARCHAR(255) DEFAULT NULL COMMENT '种类',`leixing` VARCHAR(255) DEFAULT NULL COMMENT '类型',`jiage` VARCHAR(255) DEFAULT NULL COMMENT '价格',`shuliang` VARCHAR(255) DEFAULT NULL COMMENT '数量',PRIMARY KEY(`id`)

    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='商品';------------------------------

    DROP TABLE IF EXISTS`t_dingdan`;CREATE TABLE `t_dingdan` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '订单id',`xingming` VARCHAR(255) DEFAULT NULL COMMENT '姓名',`lianxifangshi` VARCHAR(255) DEFAULT NULL COMMENT '联系方式',`mingcheng` VARCHAR(255) DEFAULT NULL COMMENT '名称',`shuliang` VARCHAR(255) DEFAULT NULL COMMENT '数量',`zhonglei` VARCHAR(255) DEFAULT NULL COMMENT '种类',`leixing` VARCHAR(255) DEFAULT NULL COMMENT '类型',`jiage` VARCHAR(255) DEFAULT NULL COMMENT '价格',`shouhuodizhi` VARCHAR(255) DEFAULT NULL COMMENT '收货地址',PRIMARY KEY(`id`)

    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='订单';

    添加商品模块:

    从页面中通过post方法,将商品信息传入到后台服务器中,在tianjiashangpinact

    中接收,字段包括名称,种类,类型,价格,数量使用insert方法添加数据,将数据同步到

    数据库中,完成添加操作。定义添加成功提示信息,添加商品成功,并保存到request中具体代码如下:

    通过shangpindao的insert方法将页面传输的商品添加到数据库中 shangpindao.insert(shangpin);

    将添加商品成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "添加商品成功");

    返回商品管理界面

    return "forward:/tianjiashangpin.action";

    查询商品模块:

    在后台中定义商品查询模块,在侧边栏中点击商品管理,可以跳转到商品管理界面。在该页面中通过shangpinController中定义shangpinguanli响应商品查询模块。在shangpinguanli中查询出所有信息,返回页面进行循环展示。查询方法为shangpindao中的selectByexample方法。该部分核心代码如下:

    生成商品样例类,通过example定义查询条件 ShangpinExample example = new ShangpinExample();

    通过shangpindao的selectByExample方法查询出所有的商品信息 List shangpinall = shangpindao.selectByExample(example);

    将商品信息,保存到request中,在页面通过foreach方法进行展示 request.setAttribute("shangpinall", shangpinall);

    返回商品管理界面

    return "forward:/shangpinguanli.action";

    修改商品模块:

    点击修改按钮,可以跳转到商品修改页面。在商品修改页面中,将初始化该商品的所有信息,并将信息一一对应填充到对应编辑栏中。编辑完商品信息后,页面通过post方法将数据封装为一个商品实体,传入到shangpinController中。在xiugaishangpin中进行接收,接收完毕后,调用shangpinMapper中的updateByPrimaryKeySelective方法进行修改。该部分代码如下:

    通过shangpindao的修改方法根据id修改对应的商品 shangpindao.updateByPrimaryKeySelective(shangpin);

    将修改商品成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "修改商品信息成功");

    返回商品管理界面

    return "forward:/shangpinguanli.action";

    删除商品模块:

    删除商品功能实现在shangpinController中,实现方法为shanchushangpin。在页面中通过get方法shanchushangpin.action?Id的形式将需要删除的商品id上传到服务器中,响应对应的方法,调用shangpindao中的deleteByPrimaryKey方法,完成删除操作。将删除成功的提示信息返回到页面中,完成删除数据的操作。该部分核心代码:

    通过shangpindao的删除方法根据id删除对应的商品 shangpindao.deleteByPrimaryKey(id);

    将删除商品成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "删除商品成功");

    返回商品管理界面

    return "forward:/shangpinguanli.action";

    展开全文
    weixin_35589806 2021-03-07 10:02:09
  • 我感觉有必要分享一下,历时2周搁置的功能 应该有很多小伙伴都在找的问题 祝你们好运 关键代码 集团id一定要填 , 两周的时间就是栽在这id上 try { BaseDAO bd = new BaseDAO(); nc.vo.so.m4331.entity...

    我感觉有必要分享一下,历时2周搁置的功能 

    应该有很多小伙伴都在找的问题  祝你们好运

    关键代码

     集团id一定要填 , 两周的时间就是栽在这id上

    try {
    			
    			BaseDAO bd = new BaseDAO();
    			nc.vo.so.m4331.entity.DeliveryHVO deliveryHVO=new nc.vo.so.m4331.entity.DeliveryHVO();
    			 //fstatusflag //1=自由,2=审批通过,3=冻结,4=关闭,7=审批中,8=审批不通过,5=失效,
    			//获取销售发货单(4331) 进行审批  产生 销售出库单 (4C)
    			deliveryHVO = (nc.vo.so.m4331.entity.DeliveryHVO) bd.executeQuery("select * from jpncdb1.so_delivery where dr=0 and vbillcode ='"+vsourcebillcode2+"'", new BeanProcessor(nc.vo.so.m4331.entity.DeliveryHVO.class));
    			if (deliveryHVO != null){
    				String so_delivery_pk=deliveryHVO.getAttributeValue("cdeliveryid").toString();//主键
    				SuperVO[] deliveryBVO = HYPubBO_Client.queryByCondition(DeliveryBVO.class,  " cdeliveryid = '"+so_delivery_pk+"'");
    				// 30   4331  4C
    				//String flag2 = PfUtilTools.approveSilently("4331",so_delivery_pk, "Y", "批准","hcj",null);
    				IplatFormEntry iIplatFormEntry = (IplatFormEntry) NCLocator.getInstance().lookup(IplatFormEntry.class.getName());
    				//这是集团ID 一般每个表都有 随便找 pk_group 字段
    				InvocationInfoProxy.getInstance().setGroupId("00013910000000000N4S"); //这个字段很重要
    				AggregatedValueObject deliveryVO= new nc.vo.so.m4331.entity.DeliveryVO();
    				deliveryVO.setParentVO(deliveryHVO);
    				deliveryVO.setChildrenVO(deliveryBVO);
    				
    				HashMap map = new HashMap();
    				map.put("notechecked", "notechecked");
    				// 审批动作 ,审批单据类型 , null ,billvo,null, 环境  ,
    				Object processAction = iIplatFormEntry.processAction("APPROVE", "4331", null, deliveryVO,null, map);
    				
    				
    			}
    		} catch (Exception e1) {
    			e1.printStackTrace();
    		}

    package nc.impl.jpncinterface;
    
    import java.awt.event.ActionEvent;
    import java.math.BigDecimal;
    import java.math.RoundingMode;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.List;
    import java.util.regex.Pattern;
    
    import nc.bs.dao.BaseDAO;
    import nc.bs.dao.DAOException;
    import nc.bs.framework.common.InvocationInfoProxy;
    import nc.bs.framework.common.NCLocator;
    import nc.bs.ic.general.businessevent.ICGeneralCommonEvent;
    import nc.bs.pub.pf.PfUtilTools;
    import nc.impl.pubapp.pattern.data.bill.BillQuery;
    import nc.itf.uap.pf.IPFBusiAction;
    import nc.itf.uap.pf.IplatFormEntry;
    import nc.jdbc.framework.processor.BeanListProcessor;
    import nc.jdbc.framework.processor.BeanProcessor;
    import nc.jdbc.framework.processor.ColumnProcessor;
    import nc.md.persist.framework.IMDPersistenceQueryService;
    import nc.ui.so.m30.billui.action.SaleOrderMESApproveAction;
    import nc.ui.so.m4331.billui.action.DeliveryApproveAction;
    import nc.ui.trade.business.HYPubBO_Client;
    import nc.vo.ic.m4c.entity.SaleOutBodyVO;
    import nc.vo.ic.m4c.entity.SaleOutHeadVO;
    import nc.vo.pu.m21.entity.OrderItemVO;
    import nc.vo.pub.AggregatedValueObject;
    import nc.vo.pub.SuperVO;
    import nc.vo.pub.pf.workflow.IPFActionName;
    import nc.vo.rmex.rmupload.deliverybill.DeliveryBillHVO;
    import nc.vo.so.m4331.entity.DeliveryBVO;
    import nc.vo.so.m4331.entity.DeliveryVO;
    
    
    import org.apache.commons.lang3.StringUtils;
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    
    public class GetIcSaleout {
    	
    	
    
    	//库存销售出库单
    	public String getExecute(String operation,String orderform){
    		String resultstr=null; 
    		if (operation.equals("Insert")){
    			//插入
    			if(isJsonObject(orderform)){//验证入参
    				resultstr = insert(operation, orderform);
    			}else{
    				JSONObject backinfojson=new JSONObject();
    				backinfojson.put("$successful", "N");
    				backinfojson.put("sendresult", "JSON格式错误");
    				resultstr=backinfojson.toString();
    			}
    		}else if (operation.equals("Update")){
    			//修改
    			resultstr=update(operation, orderform);
    			
    		}else if (operation.equals("Delete")){
    			//删除
    			resultstr=delete(operation, orderform);
    			
    		}else if (operation.equals("Search")){
    			//查询
    			resultstr = search(operation, orderform);
    			
    		}else {
    			
    			JSONObject backinfojson=new JSONObject();
    			backinfojson.put("$successful", "N");
    			backinfojson.put("sendresult", "未开放!");
    			resultstr=backinfojson.toString();
    		}
    		
    		return resultstr;
    	}
    	
    	/**
    	 * 插入
    	 * @param operation
    	 * @param orderform
    	 * @return
    	 */
    	public String insert(String operation,String orderform){
    		
    		JSONObject orderjson = JSON.parseObject(orderform);
    		StringBuffer xml_sb=new StringBuffer();
    		//String vbillcode = orderjson.getString("vbillcode");//单
    		String vsourcebillcode2 = orderjson.getString("vsourcebillcode");//销售发货单号
    		
    		
    		/*
    		 * -- 订单类型
    		select * from jpncdb1.bd_billtype where billtypename like '%整车销售%' and parentbilltype = '4C'
    		-- 销售发货单 单据号审批 产生销售出库单
    		
    		 * */
    		//String flag1 = PfUtilTools.approveSilently("交易类型编码或单据类型",主表主键, "是否通过", 审批批语, "",用户组, "动作");
    		
    
    		try {
    			
    			BaseDAO bd = new BaseDAO();
    			nc.vo.so.m4331.entity.DeliveryHVO deliveryHVO=new nc.vo.so.m4331.entity.DeliveryHVO();
    			//nc.vo.so.m4331.entity.DeliveryBVO deliveryBVO[]=null;
    			//List<DeliveryBVO> deliveryBVO=new ArrayList<DeliveryBVO>();
    			 //fstatusflag //1=自由,2=审批通过,3=冻结,4=关闭,7=审批中,8=审批不通过,5=失效,
    			//获取销售发货单(4331) 进行审批  产生 销售出库单 (4C)
    			deliveryHVO = (nc.vo.so.m4331.entity.DeliveryHVO) bd.executeQuery("select * from jpncdb1.so_delivery where dr=0 and vbillcode ='"+vsourcebillcode2+"'", new BeanProcessor(nc.vo.so.m4331.entity.DeliveryHVO.class));
    			if (deliveryHVO != null){
    				String so_delivery_pk=deliveryHVO.getAttributeValue("cdeliveryid").toString();//主键
    				//deliveryBVO[0] = (nc.vo.so.m4331.entity.DeliveryBVO) bd.executeQuery("select * from jpncdb1.so_delivery_b where dr=0 and cdeliveryid ='"+so_delivery_pk+"'", new BeanProcessor(nc.vo.so.m4331.entity.DeliveryBVO.class));
    				SuperVO[] deliveryBVO = HYPubBO_Client.queryByCondition(DeliveryBVO.class,  " cdeliveryid = '"+so_delivery_pk+"'");
    				//deliveryBVO=(List<DeliveryBVO>) bd.executeQuery("select * from jpncdb1.so_delivery_b where dr=0 and cdeliveryid ='"+so_delivery_pk+"'", new BeanListProcessor(DeliveryBVO.class));
    				String[] users = {"hcj"};
    				// 30   4331  4C
    				//String flag2 = PfUtilTools.approveSilently("4331",so_delivery_pk, "Y", "批准","hcj",null);
    				//String flag2 = PfUtilTools.approveSilently("4C-Cxx-001",so_delivery_pk, "Y", "", "APPROVE",null);
    				//String flag2 = PfUtilTools.approveSilently("4331",so_delivery_pk,null, null, "APPROVE",null);
    				//System.out.println(flag2);
    				//IplatFormEntry iIplatFormEntry = NCLocator.getInstance().lookup(IplatFormEntry.class);
    				IplatFormEntry iIplatFormEntry = (IplatFormEntry) NCLocator.getInstance().lookup(IplatFormEntry.class.getName());
    				InvocationInfoProxy.getInstance().setGroupId("00013910000000000N4S");
    				AggregatedValueObject deliveryVO= new nc.vo.so.m4331.entity.DeliveryVO();
    				 //deliveryVO
    				 //nc.vo.so.m4331.entity.DeliveryVO
    				 
    				deliveryVO.setParentVO(deliveryHVO);
    				deliveryVO.setChildrenVO(deliveryBVO);
    				
    				
    				HashMap map = new HashMap();
    				map.put("notechecked", "notechecked");
    				Object processAction = iIplatFormEntry.processAction("APPROVE", "4331", null, deliveryVO,null, map);
    				System.out.println(processAction);
    				//流程平台动作处理 服务接口
    
    				//destBill是aggvo
    				/*BillQuery<DeliveryBillHVO> billquery = new BillQuery(DeliveryBillHVO.class);
    				DeliveryBillHVO[] aggvo=billquery.query(new String[] {so_delivery_pk});
    				*/
    				/*IMDPersistenceQueryService service=NCLocator.getInstance().lookup(IMDPersistenceQueryService.class);
    				QueryCondition queryCondition=new QueryCondition(src_class);
    				queryCondition.addCondition(Restrictions.and(Restrictions.eq("vbillcode", billcode), Restrictions.eq("dr", 0)));
    				service.queryBillOfVOByCond(queryCondition, false);
    				*/
    				//DeliveryBillHVO[] obj= (DeliveryBillHVO[]) ifbaction.processAction("WRITE", "4331", null, aggvo, null, null);
    				
    				//Object retObj = new PfUtilBO().processAction("APPROVE", "4331", "2005-05-30 12:23:44", null, billVo, userObj );
    						
    				
    				
    			}
    		} catch (Exception e1) {
    			e1.printStackTrace();
    		}
    		
    		
    		
    		
    		String resultstr2 = ""; 
    		JSONObject backinfojson2=new JSONObject();
    		backinfojson2.put("$successful", "Y");
    		backinfojson2.put("sendresult", "");
    		resultstr2=backinfojson2.toString();
    		boolean flag = true;
    		if(flag){
    			return resultstr2;
    		}
    		
    		
    		String pk_org = orderjson.getString("pk_orgcode"); //库存组织 10202 pk_orgcode
    		String vtrantypecode = orderjson.getString("ctrantypecode"); //出入库类型编码 4C-Cxx-001 ctrantypecode
    		String cwarehouseid = orderjson.getString("cwarehousecode"); //仓库 X06 cwarehousecode
    		String cwhsmanagerid = orderjson.getString("cwhsmanagercode"); //库管员 08708 cwhsmanagercode
    		String cbizid = orderjson.getString("cbizcode"); //业务员 0110 cbizcode
    		String cdptvid  = orderjson.getString("cdptcode"); //部门 ""  cdptcode
    		String ccustomerid = orderjson.getString("ccustomercode"); //订单客户 070204 ccustomercode
    		//String ntotalnum = orderjson.getString("ntotalnum"); //总数量会自动计算
    		String cfanaceorgoid = orderjson.getString("cfanaceorgcode"); //结算财务组织  100 cfanaceorgcode
    		
    		
    		
    		String cbiztype = orderjson.getString("cbiztype"); //业务流程 Cxx-001
    		String dbilldate = orderjson.getString("dbilldate"); //单据日期 2021-09-07 08:33:49
    		String trafficorgoid = orderjson.getString("trafficorgoid"); //物流组织 101
    		String freplenishflag = orderjson.getString("freplenishflag");// 销售退货 N
    		String boutretflag = orderjson.getString("boutretflag"); //销售退回 N
    		String fbillflag = orderjson.getString("fbillflag"); //单据状态 2
    		String vnote = orderjson.getString("vnote"); //备注
    		String vdef2 = orderjson.getString("vdef2"); //表头自定义项2 02
    		String creator = orderjson.getString("creator"); //创建人 hcj
    		String billmaker = orderjson.getString("billmaker"); //制单人 hcj
    		String csaleorgoid = orderjson.getString("csaleorgoid"); //销售组织 101
    		String creceivfinorgoid = orderjson.getString("creceivfinorgoid"); //应收财务组织 100
    		String ctrantypeid = orderjson.getString("ctrantypeid"); //出入库类型 4C-Cxx-001
    		
    
    		String creationtime = getDateStr(new Date(),"yyyy-MM-dd HH:mm:ss"); //制单日期
    	
    		//子表
    		JSONArray body = (JSONArray) orderjson.get("body");
    		StringBuffer body_sb=new StringBuffer();
    		for (int i = 0;i<body.size();i++){
    			
    			JSONObject tmpb = body.getJSONObject(i);
    			
    			String crowno = tmpb.getString("crowno"); // 行号10 crowno
    			String cmaterialoid = tmpb.getString("cmaterialoid"); //物料编码 91812160
    			String cunitid = tmpb.getString("cunitid"); // 主单位 012
    			String vfree1 = tmpb.getString("vfree1"); //自由辅助属性1 10014910000000002J0Q 颜色 0002 
    			String nshouldnum = tmpb.getString("nshouldnum"); //应发主数量 5 
    			String nnum = tmpb.getString("nnum"); //实发主数量 5 
    			String price = tmpb.getString("price");// 单价 1000
    			//String money = tmpb.getString("money"); //金额 5000	
    			String dbizdate = tmpb.getString("dbizdate");//出库日期 2021-10-09 10:12:22
    			String cinvoicecustid = tmpb.getString("cinvoicecustid"); //开票客户 350135 
    			String csourcebillhid = tmpb.getString("csourcebillhid"); //来源单据表头主键 1001AZ10000001C3AK7J
    			String csourcebillbid = tmpb.getString("csourcebillbid"); //来源单据表体主键  1001AZ10000001C3AK7K
    			String csourcetype = tmpb.getString("csourcetype"); //来源单据类型 4331
    			String csourcetranstype = tmpb.getString("csourcetranstype"); //来源交易类型 4331-Cxx-001
    			String vsourcebillcode = tmpb.getString("vsourcebillcode"); //来源单据号 GFH210900002
    			String vsourcerowno = tmpb.getString("vsourcerowno"); //来源单据行号 10
    			String casscustid = tmpb.getString("casscustid"); //客户 350135
    			
    			String cfirsttype = tmpb.getString("cfirsttype"); //源头单据类型 30
    			String cfirsttranstype = tmpb.getString("cfirsttranstype"); //源头交易类型 30
    			String cfirstbillhid = tmpb.getString("cfirstbillhid"); //源头单据号pk //1001AZ10000001C3AK6U
    			String cfirstbillbid = tmpb.getString("cfirstbillbid"); //源头单据行号pk //1001AZ10000001C3AK6Z
    			String vfirstbillcode = tmpb.getString("vfirstbillcode"); //源头单据号 GXD210900006
    			String vfirstrowno = tmpb.getString("vfirstrowno"); //源头单据行号 10
    			String vnotebody = tmpb.getString("vnotebody"); //行备注 
    			String flargess = tmpb.getString("flargess"); //赠品 N
    			String bsourcelargess = tmpb.getString("bsourcelargess"); //上游赠品行 N	
    			String bonroadflag = tmpb.getString("bonroadflag"); //在途 N
    			String cbodytranstypecode = tmpb.getString("cbodytranstypecode"); //出入库类型 4C-Cxx-001
    			String cbodywarehouseid = tmpb.getString("cbodywarehouseid"); //库存仓库 X06
    			//String pk_org = tmpb.getString("pk_org"); //库存组织  10202
    			String ddeliverdate = tmpb.getString("ddeliverdate"); //要求收货日期 2021-09-07 08:33:49
    			String norignetprice = tmpb.getString("norignetprice"); //主无税净价 1000
    			String norigtaxnetprice = tmpb.getString("norigtaxnetprice"); // 主含税净价 1000
    			String csourcebilldate = tmpb.getString("csourcebilldate"); //来源单据日期 2021-09-07 08:33:49
    			String cfirstbilldate = tmpb.getString("cfirstbilldate"); //源头单据日期 2021-09-07 08:33:49
    
    
    			//总价
    			//金额= 数量*单价
    			BigDecimal bd_num = new BigDecimal(nnum);//数量
    			BigDecimal bd_price = new BigDecimal(price).setScale(3, RoundingMode.HALF_UP);//单价
    			BigDecimal bd_total = bd_num.multiply(bd_price);//总价
    			
    			
    			BaseDAO bd_color = new BaseDAO();
    			String pk_defdoc = "";
    			try {
    				//颜色代码查询
    				pk_defdoc = (String) bd_color.executeQuery("SELECT pk_defdoc FROM bd_defdoc WHERE pk_defdoclist = '10014910000000002GJJ' and code = '"+vfree1+"'", new ColumnProcessor());
    			} catch (DAOException e) {
    				e.printStackTrace();
    			}
    			
    			
    			StringBuffer body_sb2 = new StringBuffer();
    			JSONArray body2 = (JSONArray) tmpb.get("body");
    			for (int j = 0;j<body2.size();j++){
    				
    				JSONObject tmpb2= body2.getJSONObject(j);
    				//String nnum_2 = tmpb2.getString("nnum");
    				String nnum_2 = nnum; //主数量 2 
    				body_sb2.append(SetIcSaleoutXml.setPoOrderBody2(nnum_2));
    				
    			}
    			
    			
    			body_sb.append(SetIcSaleoutXml.setPoOrderBody(body_sb2.toString(), crowno, cmaterialoid, cunitid, vfree1, nshouldnum, 
    					nnum, price, bd_total.toString(), dbizdate, cinvoicecustid, csourcebillhid, csourcebillbid, csourcetype, 
    					csourcetranstype, vsourcebillcode, vsourcerowno, casscustid, cfirsttype, cfirsttranstype, cfirstbillhid,
    					cfirstbillbid, vfirstbillcode, vfirstrowno, vnotebody, flargess, bsourcelargess, bonroadflag, cbodytranstypecode, 
    					cbodywarehouseid, pk_org, ddeliverdate, norignetprice, norigtaxnetprice, csourcebilldate, cfirstbilldate));
    		}
    
    		
    		xml_sb = SetIcSaleoutXml.setPoOrderHead(body_sb.toString(), "", "", cbiztype, dbilldate, vtrantypecode, pk_org, cwarehouseid, trafficorgoid,
    				cwhsmanagerid, cbizid, ccustomerid, freplenishflag, boutretflag, fbillflag, vnote, vdef2, creator, billmaker, creationtime, 
    				cdptvid, csaleorgoid, cfanaceorgoid, creceivfinorgoid, ctrantypeid);
    		
    		//
    		GetXChangeService gtxchangeservice=new GetXChangeService();
    		
    		Object ovbillcode = "";
    		
    		JSONObject backinfojson=gtxchangeservice.getXChangeservice(xml_sb.toString());
    		if(backinfojson.getString("$successful").equals("Y")){
    			String pk=backinfojson.getJSONObject("sendresult").getString("content");
    			BaseDAO bd = new BaseDAO();
    			try {
    				//获取插入的订单单号  
    				ovbillcode = bd.executeQuery("select vbillcode from ic_saleout_h where cgeneralhid ='"+pk+"'", new ColumnProcessor());
    				
    				backinfojson.put("$vbillcode", ovbillcode);
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    		}else if(backinfojson.getString("$successful").equals("N")) {
    			backinfojson.put("$vbillcode",ovbillcode);
    			
    		}
    		return backinfojson.toJSONString();
    		
    	}
    	
    	/**
    	 * 修改
    	 * @param operation
    	 * @param orderform
    	 * @return
    	 */
    	public String update(String operation,String orderform){
    		JSONObject orderjson = JSON.parseObject(orderform);
    
    		String vbillcode = orderjson.getString("vbillcode");//单据号 
    		
    		String pk = "";
    
    		JSONObject backinfojson=new JSONObject();
    		if (StringUtils.isBlank(vbillcode)){
    			backinfojson.put("sendresult", "vbillcode为空!");
    			backinfojson.put("$successful", "N");
    		}else{
    			BaseDAO bd = new BaseDAO();
    			SaleOutHeadVO saleOutHeadVO=new SaleOutHeadVO();
    			try {
    				
    				saleOutHeadVO = (SaleOutHeadVO) bd.executeQuery("select * from ic_saleout_h where dr=0 and fbillflag <> 1 and vbillcode ='"+vbillcode+"'", new BeanProcessor(SaleOutHeadVO.class));
    			} catch (Exception e1) {
    				e1.printStackTrace();
    			}
    			
    			if (saleOutHeadVO != null){
    				pk=saleOutHeadVO.getAttributeValue("cgeneralhid").toString();
    				if(StringUtils.isBlank(pk)){
    					backinfojson.put("sendresult", "查询不到单据!");
    					backinfojson.put("$successful", "N");
    					
    				}else{
    					
    					StringBuffer xml_sb=new StringBuffer();
    					//String vbillcode = orderjson.getString("vbillcode");//单
    					String pk_org = orderjson.getString("pk_orgcode"); //库存组织 10202 pk_orgcode
    					String vtrantypecode = orderjson.getString("ctrantypecode"); //出入库类型编码 4C-Cxx-001 ctrantypecode
    					String cwarehouseid = orderjson.getString("cwarehousecode"); //仓库 X06 cwarehousecode
    					String cwhsmanagerid = orderjson.getString("cwhsmanagercode"); //库管员 08708 cwhsmanagercode
    					String cbizid = orderjson.getString("cbizcode"); //业务员 0110 cbizcode
    					String cdptvid  = orderjson.getString("cdptcode"); //部门 ""  cdptcode
    					String ccustomerid = orderjson.getString("ccustomercode"); //订单客户 070204 ccustomercode
    					//String ntotalnum = orderjson.getString("ntotalnum"); //总数量会自动计算
    					String cfanaceorgoid = orderjson.getString("cfanaceorgcode"); //结算财务组织  100 cfanaceorgcode
    					
    					
    					
    					String cbiztype = orderjson.getString("cbiztype"); //业务流程 Cxx-001
    					String dbilldate = orderjson.getString("dbilldate"); //单据日期 2021-09-07 08:33:49
    					String trafficorgoid = orderjson.getString("trafficorgoid"); //物流组织 101
    					String freplenishflag = orderjson.getString("freplenishflag");// 销售退货 N
    					String boutretflag = orderjson.getString("boutretflag"); //销售退回 N
    					String fbillflag = orderjson.getString("fbillflag"); //单据状态 2
    					String vnote = orderjson.getString("vnote"); //备注
    					String vdef2 = orderjson.getString("vdef2"); //表头自定义项2 02
    					String creator = orderjson.getString("creator"); //创建人 hcj
    					String billmaker = orderjson.getString("billmaker"); //制单人 hcj
    					String csaleorgoid = orderjson.getString("csaleorgoid"); //销售组织 101
    					String creceivfinorgoid = orderjson.getString("creceivfinorgoid"); //应收财务组织 100
    					String ctrantypeid = orderjson.getString("ctrantypeid"); //出入库类型 4C-Cxx-001
    					
    
    					String creationtime = getDateStr(new Date(),"yyyy-MM-dd HH:mm:ss"); //制单日期
    				
    					//子表
    					JSONArray body = (JSONArray) orderjson.get("body");
    					StringBuffer body_sb=new StringBuffer();
    					for (int i = 0;i<body.size();i++){
    						
    						JSONObject tmpb = body.getJSONObject(i);
    						
    						String crowno = tmpb.getString("crowno"); // 行号10 crowno
    						String cmaterialoid = tmpb.getString("cmaterialoid"); //物料编码 91812160
    						String cunitid = tmpb.getString("cunitid"); // 主单位 012
    						String vfree1 = tmpb.getString("vfree1"); //自由辅助属性1 10014910000000002J0Q 颜色 0002 
    						String nshouldnum = tmpb.getString("nshouldnum"); //应发主数量 5 
    						String nnum = tmpb.getString("nnum"); //实发主数量 5 
    						String price = tmpb.getString("price");// 单价 1000
    						//String money = tmpb.getString("money"); //金额 5000	
    						String dbizdate = tmpb.getString("dbizdate");//出库日期 2021-10-09 10:12:22
    						String cinvoicecustid = tmpb.getString("cinvoicecustid"); //开票客户 350135 
    						String csourcebillhid = tmpb.getString("csourcebillhid"); //来源单据表头主键 1001AZ10000001C3AK7J
    						String csourcebillbid = tmpb.getString("csourcebillbid"); //来源单据表体主键  1001AZ10000001C3AK7K
    						String csourcetype = tmpb.getString("csourcetype"); //来源单据类型 4331
    						String csourcetranstype = tmpb.getString("csourcetranstype"); //来源交易类型 4331-Cxx-001
    						String vsourcebillcode = tmpb.getString("vsourcebillcode"); //来源单据号 GFH210900002
    						String vsourcerowno = tmpb.getString("vsourcerowno"); //来源单据行号 10
    						String casscustid = tmpb.getString("casscustid"); //客户 350135
    						
    						String cfirsttype = tmpb.getString("cfirsttype"); //源头单据类型 30
    						String cfirsttranstype = tmpb.getString("cfirsttranstype"); //源头交易类型 30
    						String cfirstbillhid = tmpb.getString("cfirstbillhid"); //源头单据号pk //1001AZ10000001C3AK6U
    						String cfirstbillbid = tmpb.getString("cfirstbillbid"); //源头单据行号pk //1001AZ10000001C3AK6Z
    						String vfirstbillcode = tmpb.getString("vfirstbillcode"); //源头单据号 GXD210900006
    						String vfirstrowno = tmpb.getString("vfirstrowno"); //源头单据行号 10
    						String vnotebody = tmpb.getString("vnotebody"); //行备注 
    						String flargess = tmpb.getString("flargess"); //赠品 N
    						String bsourcelargess = tmpb.getString("bsourcelargess"); //上游赠品行 N	
    						String bonroadflag = tmpb.getString("bonroadflag"); //在途 N
    						String cbodytranstypecode = tmpb.getString("cbodytranstypecode"); //出入库类型 4C-Cxx-001
    						String cbodywarehouseid = tmpb.getString("cbodywarehouseid"); //库存仓库 X06
    						//String pk_org = tmpb.getString("pk_org"); //库存组织  10202
    						String ddeliverdate = tmpb.getString("ddeliverdate"); //要求收货日期 2021-09-07 08:33:49
    						String norignetprice = tmpb.getString("norignetprice"); //主无税净价 1000
    						String norigtaxnetprice = tmpb.getString("norigtaxnetprice"); // 主含税净价 1000
    						String csourcebilldate = tmpb.getString("csourcebilldate"); //来源单据日期 2021-09-07 08:33:49
    						String cfirstbilldate = tmpb.getString("cfirstbilldate"); //源头单据日期 2021-09-07 08:33:49
    
    
    						//总价
    						//金额= 数量*单价
    						BigDecimal bd_num = new BigDecimal(nnum);//数量
    						BigDecimal bd_price = new BigDecimal(price).setScale(3, RoundingMode.HALF_UP);//单价
    						BigDecimal bd_total = bd_num.multiply(bd_price);//总价
    						
    						
    						BaseDAO bd_color = new BaseDAO();
    						String pk_defdoc = "";
    						try {
    							//颜色代码查询
    							pk_defdoc = (String) bd_color.executeQuery("SELECT pk_defdoc FROM bd_defdoc WHERE pk_defdoclist = '10014910000000002GJJ' and code = '"+vfree1+"'", new ColumnProcessor());
    						} catch (DAOException e) {
    							e.printStackTrace();
    						}
    						
    						
    						StringBuffer body_sb2 = new StringBuffer();
    						JSONArray body2 = (JSONArray) tmpb.get("body");
    						for (int j = 0;j<body2.size();j++){
    							
    							JSONObject tmpb2= body2.getJSONObject(j);
    							//String nnum_2 = tmpb2.getString("nnum");
    							String nnum_2 = nnum; //主数量 2 
    							body_sb2.append(SetIcSaleoutXml.setPoOrderBody2(nnum_2));
    							
    						}
    						
    						
    						body_sb.append(SetIcSaleoutXml.setPoOrderBody(body_sb2.toString(), crowno, cmaterialoid, cunitid, vfree1, nshouldnum, 
    								nnum, price, bd_total.toString(), dbizdate, cinvoicecustid, csourcebillhid, csourcebillbid, csourcetype, 
    								csourcetranstype, vsourcebillcode, vsourcerowno, casscustid, cfirsttype, cfirsttranstype, cfirstbillhid,
    								cfirstbillbid, vfirstbillcode, vfirstrowno, vnotebody, flargess, bsourcelargess, bonroadflag, cbodytranstypecode, 
    								cbodywarehouseid, pk_org, ddeliverdate, norignetprice, norigtaxnetprice, csourcebilldate, cfirstbilldate));
    					}
    
    					
    					xml_sb = SetIcSaleoutXml.setPoOrderHead(body_sb.toString(), pk,vbillcode , cbiztype, dbilldate, vtrantypecode, pk_org, cwarehouseid, trafficorgoid,
    							cwhsmanagerid, cbizid, ccustomerid, freplenishflag, boutretflag, fbillflag, vnote, vdef2, creator, billmaker, creationtime, 
    							cdptvid, csaleorgoid, cfanaceorgoid, creceivfinorgoid, ctrantypeid);
    					
    					//
    					GetXChangeService gtxchangeservice=new GetXChangeService();
    					backinfojson=gtxchangeservice.getXChangeservice(xml_sb.toString());
    					backinfojson.put("$vbillcode", vbillcode);
    					if(backinfojson.getString("$successful").equals("Y")){
    						String oldpk=backinfojson.getJSONObject("sendresult").getString("bdocid");
    						
    						try {
    							bd.deleteByClause(SaleOutHeadVO.class, "cgeneralhid='"+oldpk+"'");
    							bd.deleteByClause(SaleOutBodyVO.class, "cgeneralhid='"+oldpk+"'");
    						} catch (Exception e) {
    							// TODO Auto-generated catch block
    							e.printStackTrace();
    						}
    						String newpk=backinfojson.getJSONObject("sendresult").getString("content");
    						try {
    							String sql="update ic_saleout_h set vbillcode='"+vbillcode+"' where cgeneralhid='"+newpk+"'";
    							bd.executeUpdate(sql);
    						} catch (Exception e) {
    							// TODO Auto-generated catch block
    							e.printStackTrace();
    						}
    					}
    				}
    			}else{
    				backinfojson.put("sendresult", "查询不到单据!");
    				backinfojson.put("$successful", "N");
    				
    			}
    		}
    		
    		return backinfojson.toJSONString();
    	}
    	
    	/**
    	 * 删除
    	 * @param operation
    	 * @param orderform
    	 * @return
    	 */
    	public String delete(String operation,String orderform){
    		JSONObject orderjson=JSON.parseObject(orderform);
    		String vbillcode=orderjson.getString("vbillcode");
    		String pk=null;
    		JSONObject backinfojson=new JSONObject();
    		BaseDAO bd = new BaseDAO();
    		if (vbillcode == null || "".equals(vbillcode)){
    			backinfojson.put("sendresult", "vbillcode为空!");
    			backinfojson.put("$successful", "N");
    		}else{
    			
    			SaleOutHeadVO saleOutHeadVO = new SaleOutHeadVO();
    			try {
    				String sql="select * from ic_saleout_h where vbillcode = '"+vbillcode+"' and dr=0  and fbillflag <> 1 ";
    				saleOutHeadVO = (SaleOutHeadVO) bd.executeQuery(sql, new BeanProcessor(SaleOutHeadVO.class));
    			} catch (Exception e1) {
    				e1.printStackTrace();
    			}
    			
    			if (saleOutHeadVO != null){
    				pk=saleOutHeadVO.getAttributeValue("cgeneralhid").toString();
    				if(pk == null || "".equals(pk)){
    					backinfojson.put("sendresult", "查询不到单据!");
    					backinfojson.put("$successful", "N");
    					
    				}else{
    					//单据状态
    					if(saleOutHeadVO.getAttributeValue("fbillflag").toString().equals("2") || saleOutHeadVO.getAttributeValue("fbillflag").toString().equals("6")){
    						//orderHeaderVO.setAttributeValue("dr", "1");
    						saleOutHeadVO.setFbillflag(1);
    						
    						try {
    							bd.updateVO(saleOutHeadVO);
    						} catch (Exception e) {
    							e.printStackTrace();
    						}
    						List<SaleOutBodyVO> orderItemVOList=new ArrayList<SaleOutBodyVO>();
    						try {
    							String sql="select * from ic_generalout_b where cgeneralhid = '"+pk+"' and dr=0 and fbillflag <> 1 ";
    							orderItemVOList=(List<SaleOutBodyVO>) bd.executeQuery(sql, new BeanListProcessor(SaleOutBodyVO.class));
    						} catch (Exception e) {
    							// TODO Auto-generated catch block
    							e.printStackTrace();
    						}
    						for (int i=0;i<orderItemVOList.size();i++){
    							orderItemVOList.get(i).setAttributeValue("dr", "1");
    						}
    						try {
    							bd.updateVOList(orderItemVOList);
    						} catch (Exception e) {
    							// TODO Auto-generated catch block
    							e.printStackTrace();
    						}
    						backinfojson.put("$successful", "Y");
    						backinfojson.put("sendresult", "单据删除成功!");
    					}else{
    						backinfojson.put("$successful", "N");
    						backinfojson.put("sendresult", "单据状态不允许删除!");
    					}
    					
    				}
    			}
    		}
    		return backinfojson.toString();
    	}
    
    	/**
    	 * 查询
    	 * @param operation
    	 * @param orderform
    	 * @return
    	 */
    	public String search(String operation,String orderform){
    		JSONObject backinfojson=new JSONObject();
    		backinfojson.put("$successful", "N");
    		backinfojson.put("sendresult", "未开放!");
    		return backinfojson.toString();
    	}
    	
    	
    	
    	
    	
    	
    
    	 /**
        * 判断字符串是否为JsonObject {@link org.json.JSONObject}
        * @param jsonStr {@link java.lang.String}
        * @return boolean
        */
       public static boolean isJsonObject(final String jsonStr) {
           if (StringUtils.isBlank(jsonStr)) return false;
           return Pattern.matches("^\\{.*\\}$", jsonStr.trim());
       }
    
       /**
    	 * 日期转换为字符串
    	 * @param date 日期
    	 * @param format 日期格式
    	 * @return 字符串
    	 */
    	public static String getDateStr(Date date,String format) {
    		if (null == date) {
    			return null;
    		}
    		SimpleDateFormat sdf = new SimpleDateFormat(format);
    		return sdf.format(date);
    	}
       
    }
    

     

    展开全文
    u014596302 2021-11-01 18:19:12
  • weixin_39597636 2021-03-04 01:35:49
  • m0_60323945 2021-11-29 15:12:06
  • m0_57286622 2021-05-20 13:16:59
  • m0_59687645 2021-11-28 08:33:25
  • weixin_34695463 2021-03-14 13:02:51
  • weixin_32227927 2021-03-14 13:03:03
  • mabile123444 2021-08-15 12:51:00
  • tangyuzhidao 2021-03-29 14:01:27
  • weixin_42462382 2021-02-12 17:50:15
  • weixin_39956182 2021-02-13 01:23:45
  • qq_43643944 2021-03-01 18:03:41
  • weixin_33305349 2021-03-15 21:01:10
  • weixin_36300623 2021-03-09 21:00:16
  • weixin_42412324 2021-03-15 23:50:35
  • weixin_39932838 2021-04-10 09:59:20
  • qq_32057095 2021-10-15 11:16:18
  • weixin_35180432 2021-03-10 08:43:27
  • m0_53647076 2020-12-18 16:26:21
  • q_q1262330535 2021-08-13 11:54:24
  • mabile123444 2021-08-15 12:45:13
  • weixin_55459367 2021-03-05 19:55:03
  • weixin_42518930 2021-04-09 12:19:31
  • weixin_42108054 2021-04-17 09:34:36

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 49,924
精华内容 19,969
关键字:

java销售功能

java 订阅