| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108 | package com.ruoyi.warehouseBusiness.service.impl;import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject;import com.ruoyi.basicData.domain.*;import com.ruoyi.basicData.mapper.*;import com.ruoyi.common.core.domain.AjaxResult;import com.ruoyi.common.core.domain.entity.SysUser;import com.ruoyi.common.core.domain.model.LoginUser;import com.ruoyi.common.utils.DateUtils;import com.ruoyi.common.utils.StringUtils;import com.ruoyi.reportManagement.domain.TWhgenleg;import com.ruoyi.reportManagement.mapper.TWhgenlegMapper;import com.ruoyi.system.mapper.SysDeptMapper;import com.ruoyi.system.mapper.SysUserMapper;import com.ruoyi.warehouseBusiness.domain.*;import com.ruoyi.warehouseBusiness.mapper.*;import com.ruoyi.warehouseBusiness.service.ITWarehouseBillsService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import org.springframework.transaction.interceptor.TransactionAspectSupport;import java.math.BigDecimal;import java.util.*;/** * 详情主表Service业务层处理 * * @author ruoyi * @date 2020-12-11 */@Servicepublic class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {    @Autowired    private TWhgenlegMapper tWhgenlegMapper;    @Autowired    private TGoodsMapper tGoodsMapper;    @Autowired    private SysDeptMapper sysDeptMapper;    @Autowired    private SysUserMapper sysUserMapper;    @Autowired    private TCorpsMapper tCorpsMapper;    @Autowired    private TFeesMapper tFeesMapper;    @Autowired    private TWarehouseMapper tWarehouseMapper;    @Autowired    private TWarehouseAreaMapper tWarehouseAreaMapper;    @Autowired    private TEnclosureMapper tEnclosureMapper;    @Autowired    private TWarehouseBillsMapper tWarehouseBillsMapper;    @Autowired    private TWarehousebillsfeesMapper tWarehousebillsfeesMapper;    @Autowired    private TWarehousebillsitemsMapper tWarehousebillsitemsMapper;    @Autowired    private BillnoSerialServiceImpl billnoSerialServiceImpl;    @Autowired    private BillnoDelMapper billnoDelMapper;    @Autowired    private TWarehouseAgreementServiceImpl tWarehouseAgreementService;    /**     * 查询详情主表     *     * @param fId 详情主表ID     * @return 详情主表     */    @Override    public Map<String, Object> selectTWarehousebillsById(Long fId) {        Map<String, Object> map = new HashMap<>();        // 查询仓库主表数据        TWarehouseBills tWarehousebills = tWarehouseBillsMapper.selectTWarehousebillsById(fId);        // 客户表        List<Long> corpsId = new ArrayList<>();        // 用户表        List<SysUser> sysUserList = new ArrayList<>();        // 仓库表        List<TWarehouse> warehouseList = new ArrayList<>();        // 商品        List<Long> goodsId = new ArrayList<>();        // 费用        List<Long> feesId = new ArrayList<>();        // 库区        List<Long> warehouseAreaId = new ArrayList<>();        if (!StringUtils.isNull(tWarehousebills)) {            if (StringUtils.isNotNull(tWarehousebills.getfTocorpid())) {                corpsId.add(tWarehousebills.getfTocorpid());            }            corpsId.add(tWarehousebills.getfCorpid());            // 查询联系人            SysUser sysUser = sysUserMapper.selectUserByUserName(tWarehousebills.getfStorekeeper());            if (StringUtils.isNotNull(sysUser)) {                sysUserList.add(sysUser);            }            // 查询仓库            TWarehouse tWarehouse = tWarehouseMapper.selectTWarehouseById(tWarehousebills.getfWarehouseid());            if (StringUtils.isNotNull(tWarehouse)) {                warehouseList.add(tWarehouse);            }            // 查询经营单位            corpsId.add(tWarehousebills.getfSbu());            map.put("warehousebills", tWarehousebills);        }        // 查询仓库明细从表数据        TWarehousebillsitems tWarehousebillsitems = new TWarehousebillsitems();        tWarehousebillsitems.setfPid(fId);        List<Map<String, Object>> mapList = tWarehousebillsitemsMapper.selectGoodsTransferitemsList(tWarehousebillsitems);        if (StringUtils.isNotEmpty(mapList)) {            for (Map<String, Object> wb : mapList) {                /*TWhgenleg tWhgenleg = new TWhgenleg();                tWhgenleg.setfCorpid(tWarehousebills.getfCorpid());                if (StringUtils.isNotNull(wb.get("fGoodsid"))) {                    tWhgenleg.setfGoodsid(((Integer) wb.get("fGoodsid")).longValue());                }                if (StringUtils.isNotNull(wb.get("fWarehouselocid"))) {                    tWhgenleg.setfWarehouseLocationid(((Integer) wb.get("fWarehouselocid")).longValue());                }                tWhgenleg.setfTrademodeid(tWarehousebills.getfTrademodeid());                tWhgenleg.setfMblno(tWarehousebills.getfMblno());                TWhgenleg whgenleg = tWhgenlegMapper.selectTWhgenleg(tWhgenleg);                if (StringUtils.isNotNull(whgenleg)) {                    wb.put("fQtyblc", whgenleg.getfQtyblc());                }*/                if (StringUtils.isNotNull(wb.get("fGoodsid"))) {                    Integer fGoodsid = (Integer) wb.get("fGoodsid");                    goodsId.add(fGoodsid.longValue());                }                if (StringUtils.isNotNull(wb.get("fWarehouselocid"))) {                    Integer fWarehouselocid = (Integer) wb.get("fWarehouselocid");                    warehouseAreaId.add(fWarehouselocid.longValue());                }            }            map.put("warehouseBillsItem", mapList);        }        // 查询仓库费用明细表数据        TWarehousebillsfees tWarehousebillsfees = new TWarehousebillsfees();        tWarehousebillsfees.setfPid(fId);        List<TWarehousebillsfees> warehousebillsfeesDr = new ArrayList<>();        List<TWarehousebillsfees> warehousebillsfeesCr = new ArrayList<>();        List<TWarehousebillsfees> warehousebillsfees = tWarehousebillsfeesMapper.selectTWarehousebillsfeesList(tWarehousebillsfees);        if (StringUtils.isNotEmpty(warehousebillsfees)) {            for (TWarehousebillsfees fees : warehousebillsfees) {                if ("C".equals(fees.getfDc())) {                    warehousebillsfeesCr.add(fees);                } else {                    warehousebillsfeesDr.add(fees);                }                corpsId.add(fees.getfCorpid());                feesId.add(fees.getfFeeid());            }        }        // 查询附件表数据        TEnclosure enclosure = new TEnclosure();        enclosure.setfPid(fId);        List<TEnclosure> enclosures = tEnclosureMapper.selectTEnclosureList(enclosure);        if (StringUtils.isNotEmpty(enclosures)) {            map.put("enclosures", enclosures);        }        List<TCorps> corpsList = new ArrayList<>();        List<Long> corpsIdList = StringUtils.integerDeduplication(corpsId);        for (Long corpId : corpsIdList) {            TCorps corps = tCorpsMapper.selectTCorpsById(corpId);            if (StringUtils.isNotNull(corps)) {                corpsList.add(corps);            }        }        List<TWarehouseArea> warehouseAreaList = new ArrayList<>();        List<Long> warehouseAreaIdList = StringUtils.integerDeduplication(warehouseAreaId);        for (Long warehouseArea : warehouseAreaIdList) {            TWarehouseArea tWarehouseArea = tWarehouseAreaMapper.selectTWarehouseAreaById(warehouseArea);            if (StringUtils.isNotNull(tWarehouseArea)) {                warehouseAreaList.add(tWarehouseArea);            }        }        List<TGoods> goodsList = new ArrayList<>();        List<Long> goodsIdList = StringUtils.integerDeduplication(goodsId);        for (Long goods : goodsIdList) {            TGoods tGoods = tGoodsMapper.selectTGoodsById(goods);            if (StringUtils.isNotNull(tGoods)) {                goodsList.add(tGoods);            }        }        List<TFees> feesList = new ArrayList<>();        List<Long> longList = StringUtils.integerDeduplication(feesId);        for (Long fees : longList) {            TFees tFees = tFeesMapper.selectTFeesById(fees);            if (StringUtils.isNotNull(tFees)) {                feesList.add(tFees);            }        }        map.put("corps", corpsList);        map.put("goodsList", goodsList);        map.put("feesList", feesList);        map.put("sysUser", sysUserList);        map.put("warehouse", warehouseList);        map.put("warehouseAreas", warehouseAreaList);        map.put("warehousebillsfeesDr", warehousebillsfeesDr);        map.put("warehousebillsfeesCr", warehousebillsfeesCr);        map.put("dept", sysDeptMapper.selectDeptById(tWarehousebills.getfDeptid()));        return map;    }    /**     * 查询详情主表列表     *     * @param tWarehousebills 详情主表     * @return 详情主表     */    @Override    public List<Map<String, Object>> selectWarehouseBusinessList(TWarehouseBills tWarehousebills) {        return tWarehouseBillsMapper.selectWarehouseBusinessList(tWarehousebills);    }    /**     * 查询导出所需主表列表     *     * @param tWarehousebills 详情主表     * @return 详情主表     */    @Override    public List<TWarehouseBills> selectTWarehousebillsList(TWarehouseBills tWarehousebills) {        return tWarehouseBillsMapper.selectTWarehousebillsList(tWarehousebills);    }    /**     * 根据条件查询总账是否存在     *     * @param warehouseBills      仓库主表     * @param warehousebillsitems 仓库明细表     * @return 库存总账     */    public TWhgenleg queryTWhgenleg(TWarehouseBills warehouseBills, TWarehousebillsitems warehousebillsitems) {        TWhgenleg tWhgenleg = new TWhgenleg();        // 客户        tWhgenleg.setfCorpid(warehouseBills.getfCorpid());        // 提单号        if ("HQZY".equals(warehouseBills.getfBilltype())) {            tWhgenleg.setfMblno(warehousebillsitems.getfMblno());        } else {            tWhgenleg.setfMblno(warehouseBills.getfMblno());        }        // 库区        tWhgenleg.setfWarehouseLocationid(warehousebillsitems.getfWarehouselocid());        // 货物品名        tWhgenleg.setfGoodsid(warehousebillsitems.getfGoodsid());        // 贸易方式        tWhgenleg.setfTrademodeid(warehouseBills.getfTrademodeid());        return tWhgenlegMapper.selectTWhgenleg(tWhgenleg);    }    /**     * 新增库存总账     *     * @param warehouseBills      仓库主表     * @param warehousebillsitems 仓库明细表     * @return 结果     */    @Transactional    public int instalTWhgenleg(TWarehouseBills warehouseBills, TWarehousebillsitems warehousebillsitems, SysUser user) {        TWhgenleg tWhgenleg = new TWhgenleg();        if ("SJRK".equals(warehouseBills.getfBilltype()) || "HQZY".equals(warehouseBills.getfBilltype())) {            tWhgenleg.setfOriginalbilldate(new Date());        }        // 客户        tWhgenleg.setfCorpid(warehouseBills.getfCorpid());        // 提单号        tWhgenleg.setfMblno(warehouseBills.getfMblno());        // 原始单号        tWhgenleg.setfOriginalbillno(warehouseBills.getfMblno());        // 仓库        tWhgenleg.setfWarehouseid(warehouseBills.getfWarehouseid());        // 库区        tWhgenleg.setfWarehouseLocationid(warehousebillsitems.getfWarehouselocid());        // 货物品名        tWhgenleg.setfGoodsid(warehousebillsitems.getfGoodsid());        // 计费方式        tWhgenleg.setfBillingway(warehousebillsitems.getfBillingway());        // 仓储计费日期        tWhgenleg.setfChargedate(warehousebillsitems.getfChargedate());        // 贸易方式        tWhgenleg.setfTrademodeid(warehouseBills.getfTrademodeid());        // 入库数        tWhgenleg.setfQtyd(warehousebillsitems.getfQty());        // 入库尺码        tWhgenleg.setfVolumnd(warehousebillsitems.getfVolumn());        // 唛头        tWhgenleg.setfMarks(warehousebillsitems.getfMarks());        // 入库毛重        tWhgenleg.setfGrossweightd(warehousebillsitems.getfGrossweight());        // 入库净重        tWhgenleg.setfNetweightd(warehousebillsitems.getfNetweight());        // 入库箱号        tWhgenleg.setfCntrno(warehousebillsitems.getfCntrno());        // 创建人        tWhgenleg.setCreateBy(user.getUserName());        // 创建人        tWhgenleg.setCreateTime(new Date());        // 状态        tWhgenleg.setfStatus("T");        // 结余件数        tWhgenleg.setfQtyblc(warehousebillsitems.getfQty());        System.out.println("主表新增:" + warehouseBills.toString());        System.out.println("要添加的总账:" + tWhgenleg.toString());        return tWhgenlegMapper.insertTWhgenleg(tWhgenleg);    }    @Transactional    public int updateTWhgenlegData(TWarehousebillsitems warehousebillsitems, long whgenlegId, String billtype) {        Map<String, Object> map = new HashMap<>();        map.put("whgenlegId", whgenlegId);        map.put("billType", billtype);        map.put("warehousebillsitems", warehousebillsitems);        return tWhgenlegMapper.updateTWhgenlegData(map);    }    /**     * 新增详情主表     *     * @param tWarehouseBills       仓库主表     * @param tWarehousebillsfeesCr 仓库费付款用明细表     * @param tWarehousebillsfeesDr 仓库费收     *                              款用明细表     * @param tWarehousebillsitems  仓库货物明细表     * @param loginUser             当前登陆人     * @param billsType             判断标识     * @return 结果     */    @Override    @Transactional    public AjaxResult insertTWarehousebills(String tWarehouseBills, String tWarehousebillsfeesCr, String tWarehousebillsfeesDr            , String tWarehousebillsitems, String tWhgenleg, LoginUser loginUser, String billsType) {        Long fPid = null;        TWarehouseBills warehouseBills = JSONArray.parseObject(tWarehouseBills, TWarehouseBills.class);        if (StringUtils.isNull(warehouseBills.getfId())) {            // 如果是新数据            warehouseBills.setCreateBy(loginUser.getUser().getUserName());            warehouseBills.setfChargedate(warehouseBills.getfBsdate());            warehouseBills.setfBilltype(billsType);            warehouseBills.setfBsdeptid(loginUser.getUser().getDeptId());            /*// 提交时:  生流水号            if ("6".equals(warehouseBills.getfBillstatus()) || "7".equals(warehouseBills.getfBillstatus())) {                // 业务编码                String billNo = billnoSerialServiceImpl.getBillNo(billsType, warehouseBills.getfBsdate());                warehouseBills.setfBillno(billNo);                // 存货编码                Date time = new Date();                String bscorpno = billnoSerialServiceImpl.getCorpNo(warehouseBills.getfCorpid(), time);                warehouseBills.setfBscorpno(bscorpno);            }*/            // 业务编码            String billNo = billnoSerialServiceImpl.getBillNo(billsType, warehouseBills.getfBsdate());            warehouseBills.setfBillno(billNo);            // 存货编码            Date time = new Date();            String bscorpno = billnoSerialServiceImpl.getCorpNo(warehouseBills.getfCorpid(), time);            warehouseBills.setfBscorpno(bscorpno);            tWarehouseBillsMapper.insertTWarehousebills(warehouseBills);            fPid = warehouseBills.getfId();        } else {            fPid = warehouseBills.getfId();            warehouseBills.setfChargedate(warehouseBills.getfBsdate());            warehouseBills.setUpdateBy(loginUser.getUser().getUserName());            warehouseBills.setUpdateTime(new Date());            tWarehouseBillsMapper.updateTWarehousebills(warehouseBills);            tWarehousebillsitemsMapper.deleteByFPid(fPid);            tWarehousebillsfeesMapper.deleteByFPid(fPid);            tEnclosureMapper.deleteByFPid(fPid);        }        // 查询库存总账   库存明细不为空 并且 入库不是暂存状态 进行库存总账的查询新增修改        if (tWarehousebillsitems != null && !"2".equals(warehouseBills.getfBillstatus())) {            JSONArray warehouseJSON = JSONArray.parseArray(tWarehousebillsitems);            List<TWarehousebillsitems> warehousebillsitemsList = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsitems.class);            int i = 1;            for (TWarehousebillsitems wbItem : warehousebillsitemsList) {                // 查询总账是否存在                TWhgenleg tWhgenle = queryTWhgenleg(warehouseBills, wbItem);                //  入库数特殊不判断入账                if ("SJCK".equals(billsType)) { // 出库 查询                    if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();                        return AjaxResult.error("库存明细第" + i + "行库存为空");                    } else { // 非空修改库存总账                        if ("6".equals(warehouseBills.getfBillstatus())) {                            //  库存 <  出库件数  提示库存不足                            if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();                                return AjaxResult.error("库存明细第" + i + "行库存不足");                            }                            updateTWhgenlegData(wbItem, tWhgenle.getfId(), billsType);                        }                    }                } else if ("CKDB".equals(billsType)) { // 调拨查询                    if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();                        return AjaxResult.error("库存明细第" + i + "行库存为空");                    } else { // 非空修改库存总账                        if ("6".equals(warehouseBills.getfBillstatus())) {                            if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {  //  1、  库存 <  调拨件数  提示库存不足                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();                                return AjaxResult.error("库存明细第" + i + "行库存不足");                            } else {  // 2、 库存足够 先 进行出库操作                                updateTWhgenlegData(wbItem, tWhgenle.getfId(), "SJCK");                            }                            // 3、 进行入库操作 查询是否存在库存                            warehouseBills.setfCorpid(warehouseBills.getfTocorpid()); // 新货权方                            TWhgenleg tWhgenle1 = queryTWhgenleg(warehouseBills, wbItem);                            if (StringUtils.isNull(tWhgenle1)) {   // 5、 不存在 进行新增库存                                instalTWhgenleg(warehouseBills, wbItem, loginUser.getUser());                            } else { // 4、 存在 进行跟新库存                                if ("6".equals(warehouseBills.getfBillstatus())) {                                    updateTWhgenlegData(wbItem, tWhgenle1.getfId(), "SJRK");                                }                            }                        }                    }                } else if ("HQZY".equals(billsType)) { // 货转                    if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();                        return AjaxResult.error("库存明细第" + i + "行库存为空");                    } else { // 非空修改库存总账                        if ("6".equals(warehouseBills.getfBillstatus())) {                            if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {  //  1、  库存 <  调拨件数  提示库存不足                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();                                return AjaxResult.error("库存明细第" + i + "行库存不足");                            } else {  // 2、 库存足够 先 进行出库操作                                updateTWhgenlegData(wbItem, tWhgenle.getfId(), "SJCK");                            }                            // 3、 进行入库操作 查询是否存在库存                            warehouseBills.setfCorpid(warehouseBills.getfTocorpid()); // 新货权方                            TWhgenleg tWhgenle1 = queryTWhgenleg(warehouseBills, wbItem);                            if (StringUtils.isNull(tWhgenle1)) {   // 5、 不存在 进行新增库存                                instalTWhgenleg(warehouseBills, wbItem, loginUser.getUser());                            } else { // 4、 存在 进行跟新库存                                updateTWhgenlegData(wbItem, tWhgenle1.getfId(), "SJRK");                            }                        }                    }                }                i++;            }        }        // 库存明细添加        if (tWarehousebillsitems != null) {            JSONArray warehouseJSON = JSONArray.parseArray(tWarehousebillsitems);            List<TWarehousebillsitems> warehousebillsitemsList = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsitems.class);            int notInStorage = 0;            int Stored = 0;            for (TWarehousebillsitems wbItem : warehousebillsitemsList) {                if (wbItem.getfBillstatus() == null) {                    wbItem.setfBillstatus("1");                    notInStorage++;                } else if (wbItem.getfBillstatus().equals("6")) {                    wbItem.setfBillstatus("6");                    Stored++;                } else if (wbItem.getfBillstatus().equals("1")) {                    wbItem.setfBillstatus("1");                    notInStorage++;                }                wbItem.setfPid(fPid);                wbItem.setfMarks(warehouseBills.getfMarks());                wbItem.setfMblno(warehouseBills.getfMblno());                wbItem.setCreateBy(loginUser.getUser().getUserName());                wbItem.setCreateTime(new Date());                tWarehousebillsitemsMapper.insertTWarehousebillsitems(wbItem);            }            // 录入库存明细整体状态            TWarehouseBills warehouseBill = new TWarehouseBills();            warehouseBill.setfId(fPid);            if (Objects.equals(Stored, 0)) { // 未入库                warehouseBill.setfItemsStatus("1");            } else if (Objects.equals(notInStorage, 0)) { // 已入库                warehouseBill.setfItemsStatus("6");            } else { // 有已入库、有未入库                warehouseBill.setfItemsStatus("2");            }            tWarehouseBillsMapper.updateTWarehousebills(warehouseBill);        }        //  附件添加        if (StringUtils.isNotNull(tWhgenleg)) {            JSONArray jsonDrArray = JSONArray.parseArray(tWhgenleg);            List<TEnclosure> tEnclosureList = JSONObject.parseArray(jsonDrArray.toJSONString(), TEnclosure.class);            for (TEnclosure tEnclosure : tEnclosureList) {                tEnclosure.setfPid(fPid);                tEnclosure.setCreateBy(loginUser.getUser().getUserName());                tEnclosure.setCreateTime(new Date());                tEnclosureMapper.insertTEnclosure(tEnclosure);            }        }        // 收款明细添加        if (tWarehousebillsfeesDr != null) {            JSONArray jsonDrArray = JSONArray.parseArray(tWarehousebillsfeesDr);            List<TWarehousebillsfees> warehousebillsfeesDrList = JSONObject.parseArray(jsonDrArray.toJSONString(), TWarehousebillsfees.class);            for (TWarehousebillsfees wbDr : warehousebillsfeesDrList) {                // 检验  数量*单价=金额                wbDr.setfPid(fPid);                wbDr.setfDc("D");                wbDr.setCreateBy(loginUser.getUser().getUserName());                wbDr.setCreateTime(new Date());                tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbDr);            }        }        // 付款明细添加        if (tWarehousebillsfeesCr != null) {            JSONArray jsonCrArray = JSONArray.parseArray(tWarehousebillsfeesCr);            List<TWarehousebillsfees> warehousebillsfeesCrList = JSONObject.parseArray(jsonCrArray.toJSONString(), TWarehousebillsfees.class);            for (TWarehousebillsfees wbCr : warehousebillsfeesCrList) {                wbCr.setfPid(fPid);                wbCr.setfDc("C");                wbCr.setCreateBy(loginUser.getUser().getUserName());                wbCr.setCreateTime(new Date());                tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbCr);            }        }        if ("2".equals(warehouseBills.getfBillstatus())) {            return AjaxResult.success(warehouseBills);        }        return AjaxResult.success();    }    /**     * 入库详情入账     *     * @param warehouseBills      主表     * @param warehousebillsitems 明细     * @param whgenleg            附件     * @param loginUser           当前登录人     * @param billsType           状态     * @return 结果     */    @Override    @Transactional    public AjaxResult addCredit(String warehouseBills, String warehousebillsitems, String whgenleg, LoginUser loginUser, String billsType) {        Long fPid = null;        if (StringUtils.isNull(warehouseBills) || "[]".equals(warehouseBills)) {            return AjaxResult.error("未找到主表信息");        }        if (StringUtils.isNull(warehousebillsitems) || "[]".equals(warehousebillsitems)) {            return AjaxResult.error("未找到入账信息");        }        TWarehouseBills tWarehouseBills = JSONArray.parseObject(warehouseBills, TWarehouseBills.class);        if (StringUtils.isNotNull(tWarehouseBills.getfId())) {            tWarehouseBills.setUpdateBy(loginUser.getUser().getUserName());            tWarehouseBills.setUpdateTime(new Date());            tWarehouseBillsMapper.updateTWarehousebills(tWarehouseBills);            fPid = tWarehouseBills.getfId();            tEnclosureMapper.deleteByFPid(fPid);        } else {            // 业务编码            String billNo = billnoSerialServiceImpl.getBillNo(billsType, tWarehouseBills.getfBsdate());            tWarehouseBills.setfBillno(billNo);            // 存货编码            Date time = new Date();            String bscorpno = billnoSerialServiceImpl.getCorpNo(tWarehouseBills.getfCorpid(), time);            tWarehouseBills.setfBscorpno(bscorpno);            tWarehouseBills.setCreateBy(loginUser.getUser().getUserName());            tWarehouseBills.setCreateTime(new Date());            tWarehouseBills.setfBilltype("SJRK");            tWarehouseBills.setfBsdeptid(loginUser.getUser().getDeptId());            // 已入账            tWarehouseBills.setfBillstatus("2");            tWarehouseBillsMapper.insertTWarehousebills(tWarehouseBills);            fPid = tWarehouseBills.getfId();        }        JSONArray warehouseJSON = JSONArray.parseArray(warehousebillsitems);        List<TWarehousebillsitems> warehousebillsitemsList = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsitems.class);        for (TWarehousebillsitems item : warehousebillsitemsList) {            // 唛头添加            item.setfMarks(tWarehouseBills.getfMarks());            item.setfBillingway(tWarehouseBills.getfBillingway());            item.setfChargedate(tWarehouseBills.getfChargedate());            TWhgenleg tWhgenle = queryTWhgenleg(tWarehouseBills, item);            if (StringUtils.isNotNull(tWhgenle)) {                int i = updateTWhgenlegData(item, tWhgenle.getfId(), billsType);                if (i <= 0) {                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();                    return AjaxResult.error("更新库存总账失败");                }            } else {                if (instalTWhgenleg(tWarehouseBills, item, loginUser.getUser()) <= 0) {                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();                    return AjaxResult.error("新增库存总账失败");                }            }            item.setfPid(fPid);            item.setfBillstatus("6");            item.setCreateBy(loginUser.getUser().getUserName());            item.setCreateTime(new Date());            int num = 0;            if (StringUtils.isNotNull(item.getfId())) {                num = tWarehousebillsitemsMapper.updateTWarehousebillsitems(item);            } else {                num = tWarehousebillsitemsMapper.insertTWarehousebillsitems(item);            }            if (num <= 0) {                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();                return AjaxResult.error("新增库存明细失败");            }        }        // 查询所有库存明细 修改仓库主表状态        int notInStorage = 0;        int Stored = 0;        TWarehousebillsitems tWarehousebillsitems = new TWarehousebillsitems();        tWarehousebillsitems.setfPid(fPid);        List<TWarehousebillsitems> warehousebillsitemsList1 = tWarehousebillsitemsMapper.selectTWarehousebillsitemsList(tWarehousebillsitems);        for (TWarehousebillsitems item : warehousebillsitemsList1) {            if (item.getfBillstatus() == null) {                notInStorage++;            } else if (item.getfBillstatus().equals("6")) {                Stored++;            } else if (item.getfBillstatus().equals("1")) {                notInStorage++;            }        }        // 录入库存明细整体状态        TWarehouseBills warehouseBill = new TWarehouseBills();        warehouseBill.setfId(fPid);        if (Objects.equals(Stored, 0)) { // 未入库            warehouseBill.setfItemsStatus("1");        } else if (Objects.equals(notInStorage, 0)) { // 已入库            warehouseBill.setfItemsStatus("6");        } else { // 有已入库、有未入库            warehouseBill.setfItemsStatus("2");        }        tWarehouseBillsMapper.updateTWarehousebills(warehouseBill);        if (StringUtils.isNotNull(whgenleg) && !"[]".equals(whgenleg)) {            JSONArray jsonDrArray = JSONArray.parseArray(whgenleg);            List<TEnclosure> tEnclosureList = JSONObject.parseArray(jsonDrArray.toJSONString(), TEnclosure.class);            for (TEnclosure tEnclosure : tEnclosureList) {                tEnclosure.setfPid(fPid);                tEnclosure.setCreateBy(loginUser.getUser().getUserName());                tEnclosure.setCreateTime(new Date());                tEnclosureMapper.insertTEnclosure(tEnclosure);            }        }        // 添加成功 主键返回 前台        return AjaxResult.success("成功", fPid);    }    /**     * 出库、调拨、货转 确认     *     * @param warehouseBills     * @param warehousebillsitems     * @param loginUser     * @param billsType     * @return     */    @Override    @Transactional    public AjaxResult updateCredit(String warehouseBills, String warehousebillsitems, LoginUser loginUser, String billsType) {        Long fPid = null;        Map<String, Object> map = new HashMap<>();        if (StringUtils.isNull(warehouseBills) || "[]".equals(warehouseBills)) {            return AjaxResult.error("未找到主表信息");        }        if (StringUtils.isNull(warehousebillsitems) || "[]".equals(warehousebillsitems)) {            return AjaxResult.error("未找到入账信息");        }        TWarehouseBills tWarehouseBills = JSONArray.parseObject(warehouseBills, TWarehouseBills.class);        if (StringUtils.isNotNull(tWarehouseBills.getfId())) {            tWarehouseBills.setUpdateBy(loginUser.getUser().getUserName());            tWarehouseBills.setUpdateTime(new Date());            tWarehouseBillsMapper.updateTWarehousebills(tWarehouseBills);            fPid = tWarehouseBills.getfId();            tEnclosureMapper.deleteByFPid(fPid);        } else {            // 业务编码            String billNo = billnoSerialServiceImpl.getBillNo(billsType, tWarehouseBills.getfBsdate());            tWarehouseBills.setfBillno(billNo);            // 存货编码            Date time = new Date();            String bscorpno = billnoSerialServiceImpl.getCorpNo(tWarehouseBills.getfCorpid(), time);            tWarehouseBills.setfBscorpno(bscorpno);            tWarehouseBills.setCreateBy(loginUser.getUser().getUserName());            tWarehouseBills.setCreateTime(new Date());            tWarehouseBills.setfBsdeptid(loginUser.getUser().getDeptId());            // 已入账            tWarehouseBills.setfBillstatus("2");            tWarehouseBills.setfBilltype(billsType);            tWarehouseBillsMapper.insertTWarehousebills(tWarehouseBills);            fPid = tWarehouseBills.getfId();        }        JSONArray warehouseJSON = JSONArray.parseArray(warehousebillsitems);        List<TWarehousebillsitems> warehousebillsitemsList = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsitems.class);        int i = 1;        List<TFees> feesList = new ArrayList<>();        List<TWarehousebillsfees> warehousebillsfees = new ArrayList<>();        for (TWarehousebillsitems wbItem : warehousebillsitemsList) {            // 唛头添加            wbItem.setfMarks(tWarehouseBills.getfMarks());            // 查询总账是否存在            TWhgenleg tWhgenle = queryTWhgenleg(tWarehouseBills, wbItem);            //  入库数特殊不判断入账            if ("SJCK".equals(billsType)) { // 出库 查询                if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();                    return AjaxResult.error("库存明细第" + i + "行库存为空");                } else { // 非空修改库存总账                    //  库存 <  出库件数  、                    if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();                        return AjaxResult.error("库存明细第" + i + "行库存不足");                    }                    // 更新库存总账                    updateTWhgenlegData(wbItem, tWhgenle.getfId(), billsType);                    long dateDay = DateUtils.getDateDay(tWarehouseBills.getfBsdate(), wbItem.getfBsdate());                    long fCorpid = tWarehouseBills.getfCorpid();                    TGoods tGoods = tGoodsMapper.selectTGoodsById(wbItem.getfGoodsid());                    long fGoodsid = tGoods.getfTypeid();                    long fBillingway = wbItem.getfBillingway();                    long fQty = wbItem.getfQty();                    // 计算仓储费明细                    Map<String, Object> objectMap = tWarehouseAgreementService.getCarryingCost(fCorpid, fGoodsid, dateDay, fBillingway, fQty);                    if (StringUtils.isNull(objectMap)) {                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();                        return AjaxResult.error("库存明细第" + i + "行没有维护出库明细的仓储协议,操作终止");                    }                    TWarehousebillsfees fees = new TWarehousebillsfees();                    Long feeId = (Long) objectMap.get("feeId");                    BigDecimal amt = (BigDecimal) objectMap.get("amt");                    fees.setfPid(fPid);                    fees.setfFeeid(feeId);                    fees.setfFeeUnitid(fBillingway);                    fees.setfQty(new BigDecimal(1));                    fees.setfUnitprice(amt);                    fees.setfAmount(amt);                    warehousebillsfees.add(fees);                    TFees tFees = tFeesMapper.selectTFeesById(feeId);                    if (StringUtils.isNotNull(tFees)) {                        feesList.add(tFees);                    }                }            } else if ("CKDB".equals(billsType)) { // 调拨查询                if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();                    return AjaxResult.error("库存明细第" + i + "行库存为空");                } else { // 非空修改库存总账                    if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {  //  1、  库存 <  调拨件数  提示库存不足                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();                        return AjaxResult.error("库存明细第" + i + "行库存不足");                    } else {  // 2、 库存足够 先 进行出库操作                        updateTWhgenlegData(wbItem, tWhgenle.getfId(), "SJCK");                    }                    // 3、 进行入库操作 查询是否存在库存                    tWarehouseBills.setfCorpid(tWarehouseBills.getfTocorpid()); // 新货权方                    TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehouseBills, wbItem);                    if (StringUtils.isNull(tWhgenle1)) {   // 5、 不存在 进行新增库存                        instalTWhgenleg(tWarehouseBills, wbItem, loginUser.getUser());                    } else { // 4、 存在 进行跟新库存                        updateTWhgenlegData(wbItem, tWhgenle1.getfId(), "SJRK");                    }                }            } else if ("HQZY".equals(billsType)) { // 货转                if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();                    return AjaxResult.error("库存明细第" + i + "行库存为空");                } else { // 非空修改库存总账                    if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {  //  1、  库存 <  调拨件数  提示库存不足                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();                        return AjaxResult.error("库存明细第" + i + "行库存不足");                    } else {  // 2、 库存足够 先 进行出库操作                        updateTWhgenlegData(wbItem, tWhgenle.getfId(), "SJCK");                    }                    // 3、 进行入库操作 查询是否存在库存                    tWarehouseBills.setfCorpid(tWarehouseBills.getfTocorpid()); // 新货权方                    TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehouseBills, wbItem);                    if (StringUtils.isNull(tWhgenle1)) {   // 5、 不存在 进行新增库存                        instalTWhgenleg(tWarehouseBills, wbItem, loginUser.getUser());                    } else { // 4、 存在 进行跟新库存                        updateTWhgenlegData(wbItem, tWhgenle1.getfId(), "SJRK");                    }                }            }            i++;            wbItem.setfPid(fPid);            wbItem.setfBillstatus("6");            wbItem.setfBsdate(tWarehouseBills.getfBsdate());            wbItem.setCreateBy(loginUser.getUser().getUserName());            wbItem.setCreateTime(new Date());            int num = 0;            if (StringUtils.isNotNull(wbItem.getfId())) {                num = tWarehousebillsitemsMapper.updateTWarehousebillsitems(wbItem);            } else {                num = tWarehousebillsitemsMapper.insertTWarehousebillsitems(wbItem);            }            if (num <= 0) {                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();                return AjaxResult.error("库存明细更新失败");            }        }        // 查询所有库存明细 修改仓库主表状态        int notInStorage = 0;        int Stored = 0;        TWarehousebillsitems tWarehousebillsitems = new TWarehousebillsitems();        tWarehousebillsitems.setfPid(fPid);        List<TWarehousebillsitems> warehousebillsitemsList1 = tWarehousebillsitemsMapper.selectTWarehousebillsitemsList(tWarehousebillsitems);        for (TWarehousebillsitems item : warehousebillsitemsList1) {            if (item.getfBillstatus() == null) {                notInStorage++;            } else if (item.getfBillstatus().equals("6")) {                Stored++;            } else if (item.getfBillstatus().equals("1")) {                notInStorage++;            }        }        // 录入库存明细整体状态        TWarehouseBills warehouseBill = new TWarehouseBills();        warehouseBill.setfId(fPid);        if (Objects.equals(Stored, 0)) { // 未入库            warehouseBill.setfItemsStatus("1");        } else if (Objects.equals(notInStorage, 0)) { // 已入库            warehouseBill.setfItemsStatus("6");        } else { // 有已入库、有未入库            warehouseBill.setfItemsStatus("2");        }        tWarehouseBillsMapper.updateTWarehousebills(warehouseBill);        map.put("fPid", fPid);        map.put("fees", feesList);        map.put("warehousebillsfees", warehousebillsfees);        // 添加成功 主键返回 前台        return AjaxResult.success("成功", map);    }    // 入库 收费明细 校验    public Long check(BigDecimal number, BigDecimal unitPrice) {        BigDecimal result1 = number.multiply(unitPrice);        // 保留两位小数且四舍五入        result1 = result1.setScale(2, BigDecimal.ROUND_HALF_UP);        // 转换去掉小数点        String result = result1.toString().replace(".", "");        return Long.valueOf(result);    }    /**     * 修改详情主表     *     * @param tWarehousebills 详情主表     * @return 结果     */    @Override    public int updateTWarehousebills(TWarehouseBills tWarehousebills) {        tWarehousebills.setUpdateTime(DateUtils.getNowDate());        return tWarehouseBillsMapper.updateTWarehousebills(tWarehousebills);    }    /**     * 批量删除详情主表     *     * @param fIds 需要删除的详情主表ID     * @return 结果     */    @Override    public int deleteTWarehousebillsByIds(Long[] fIds) {        // 取出业务编号、 放入 billno_del        for (Long id : fIds) {            // 1、查询主表信息            TWarehouseBills tWarehousebills = tWarehouseBillsMapper.selectTWarehousebillsById(id);            // 2、业务编号、客存编号 放入 billno_del            BillnoDel billnoDel = new BillnoDel();            billnoDel.setBillType(tWarehousebills.getfBilltype());            billnoDel.setBillNo(tWarehousebills.getfBillno());            billnoDelMapper.insertBillnoDel(billnoDel);        }        return tWarehouseBillsMapper.deleteTWarehousebillsByIds(fIds);    }    /**     * 删除详情主表信息     *     * @param fId 详情主表ID     * @return 结果     */    @Override    public int deleteTWarehousebillsById(Long fId) {        return tWarehouseBillsMapper.deleteTWarehousebillsById(fId);    }    @Override    public String getWarehouseInStockBillsNo(TWarehouseBills tWarehouseBills) {        return null;    }    @Override    public String getWarehouseOutStockBillsNo(TWarehouseBills tWarehouseBills) {        return null;    }    @Override    public AjaxResult revokeTWarehousebillsById(Long fId, LoginUser loginUser, String billsType) {        // 查询 仓库主表信息、库存明细信息        TWarehouseBills tWarehousebills = tWarehouseBillsMapper.selectTWarehousebillsById(fId);        // 修改主表信息        tWarehousebills.setUpdateBy(loginUser.getUser().getUserName());        tWarehousebills.setUpdateTime(new Date());        tWarehousebills.setfBillstatus("3"); //撤销状态        tWarehouseBillsMapper.updateTWarehousebills(tWarehousebills);        // 查询库存明细从表数据        TWarehousebillsitems tWarehousebillsitems = new TWarehousebillsitems();        tWarehousebillsitems.setfPid(fId);        List<TWarehousebillsitems> warehousebillsitems = tWarehousebillsitemsMapper.selectTWarehousebillsitemsList(tWarehousebillsitems);        // 撤销 库存总账        if (StringUtils.isNotEmpty(warehousebillsitems)) {            int i = 1;            for (TWarehousebillsitems wb : warehousebillsitems) {                // 查询库存总账                TWhgenleg tWhgenle = queryTWhgenleg(tWarehousebills, wb);                if ("SJRKRevoke".equals(billsType)) { // 撤销 入库                    if (StringUtils.isNotNull(tWhgenle) && (wb.getfQty() <= tWhgenle.getfQtyblc())) { // 非空 且 撤销数 <= 结余数                        updateTWhgenlegData(wb, tWhgenle.getfId(), billsType);                    } else { // 撤销数>结余数                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();                        return AjaxResult.error("第" + i + "行撤销数大于库存结余数");                    }                } else if ("SJCKRevoke".equals(billsType)) { // 撤销出库                    if (StringUtils.isNotNull(tWhgenle)) { // 非空                        updateTWhgenlegData(wb, tWhgenle.getfId(), billsType);                    } else {                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();                        return AjaxResult.error("第" + i + "行未查询到库存信息");                    }                } else if ("CKDBRevoke".equals(billsType)) { // 调拨 撤销                    Long fCorpid = tWarehousebills.getfCorpid();// 原货权方                    Long fTocorpid = tWarehousebills.getfTocorpid(); // 新货权方                    //  1、新货权方撤销入库                    // 查询库存总账                    tWarehousebills.setfCorpid(fTocorpid);                    TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehousebills, wb);                    if (StringUtils.isNotNull(tWhgenle1) && (wb.getfQty() <= tWhgenle1.getfQtyblc())) {                        updateTWhgenlegData(wb, tWhgenle1.getfId(), "SJRKRevoke");                    } else {                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();                        return AjaxResult.error("第" + i + "行撤销数大于库存结余数");                    }                    //  2、原货权方撤销出库                    // 查询库存总账                    tWarehousebills.setfCorpid(fCorpid);                    TWhgenleg tWhgenle2 = queryTWhgenleg(tWarehousebills, wb);                    updateTWhgenlegData(wb, tWhgenle2.getfId(), "SJCKRevoke");                } else if ("HQZYRevoke".equals(billsType)) { // 货转撤销 HQZYRevoke                    Long fCorpid = tWarehousebills.getfCorpid();// 原货权方                    Long fTocorpid = tWarehousebills.getfTocorpid(); // 新货权方                    //  1、新货权方撤销入库                    // 查询库存总账                    tWarehousebills.setfCorpid(fTocorpid);                    TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehousebills, wb);                    if (StringUtils.isNotNull(tWhgenle1) && (wb.getfQty() <= tWhgenle1.getfQtyblc())) {                        updateTWhgenlegData(wb, tWhgenle1.getfId(), "SJRKRevoke");                    } else {                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();                        return AjaxResult.error("第" + i + "行撤销数大于库存结余数");                    }                    //  2、原货权方撤销出库                    // 查询库存总账                    tWarehousebills.setfCorpid(fCorpid);                    TWhgenleg tWhgenle2 = queryTWhgenleg(tWarehousebills, wb);                    updateTWhgenlegData(wb, tWhgenle2.getfId(), "SJCKRevoke");                }                i++;            }        }        return AjaxResult.success();    }    /**     * 撤销入账     *     * @param warehouseBills      主表     * @param warehousebillsitems 明细     * @param loginUser           当前登录人     * @param billsType           状态     * @return 结果     */    @Override    @Transactional    public AjaxResult revokeTWarehousebillsById1(String warehouseBills, String warehousebillsitems, LoginUser loginUser, String billsType) {        Long fPid = null;        if (StringUtils.isNull(warehouseBills) || "[]".equals(warehouseBills)) {            return AjaxResult.error("未找到主表信息");        }        if (StringUtils.isNull(warehousebillsitems) || "[]".equals(warehousebillsitems)) {            return AjaxResult.error("未找到入账信息");        }        TWarehouseBills tWarehousebills = JSONArray.parseObject(warehouseBills, TWarehouseBills.class);        fPid = tWarehousebills.getfId();        JSONArray warehouseJSON = JSONArray.parseArray(warehousebillsitems);        List<TWarehousebillsitems> warehousebillsitemsList = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsitems.class);        if (StringUtils.isNotEmpty(warehousebillsitemsList)) {            int i = 1;            for (TWarehousebillsitems wb : warehousebillsitemsList) {                // 查询库存总账                TWhgenleg tWhgenle = queryTWhgenleg(tWarehousebills, wb);                if ("SJRKRevoke".equals(billsType)) { // 撤销 入库                    if (StringUtils.isNotNull(tWhgenle) && (wb.getfQty() <= tWhgenle.getfQtyblc())) { // 非空 且 撤销数 <= 结余数                        updateTWhgenlegData(wb, tWhgenle.getfId(), billsType);                    } else { // 撤销数>结余数                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();                        return AjaxResult.error("第" + i + "行撤销数大于库存结余数");                    }                } else if ("SJCKRevoke".equals(billsType)) { // 撤销出库                    if (StringUtils.isNotNull(tWhgenle)) { // 非空                        updateTWhgenlegData(wb, tWhgenle.getfId(), billsType);                    } else {                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();                        return AjaxResult.error("第" + i + "行未查询到库存信息");                    }                } else if ("CKDBRevoke".equals(billsType)) { // 调拨 撤销                    Long fCorpid = tWarehousebills.getfCorpid();// 原货权方                    Long fTocorpid = tWarehousebills.getfTocorpid(); // 新货权方                    //  1、新货权方撤销入库                    // 查询库存总账                    tWarehousebills.setfCorpid(fTocorpid);                    TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehousebills, wb);                    if (StringUtils.isNotNull(tWhgenle1) && (wb.getfQty() <= tWhgenle1.getfQtyblc())) {                        updateTWhgenlegData(wb, tWhgenle1.getfId(), "SJRKRevoke");                    } else {                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();                        return AjaxResult.error("第" + i + "行撤销数大于库存结余数");                    }                    //  2、原货权方撤销出库                    // 查询库存总账                    tWarehousebills.setfCorpid(fCorpid);                    TWhgenleg tWhgenle2 = queryTWhgenleg(tWarehousebills, wb);                    updateTWhgenlegData(wb, tWhgenle2.getfId(), "SJCKRevoke");                } else if ("HQZYRevoke".equals(billsType)) { // 货转撤销 HQZYRevoke                    Long fCorpid = tWarehousebills.getfCorpid();// 原货权方                    Long fTocorpid = tWarehousebills.getfTocorpid(); // 新货权方                    //  1、新货权方撤销入库                    // 查询库存总账                    tWarehousebills.setfCorpid(fTocorpid);                    TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehousebills, wb);                    if (StringUtils.isNotNull(tWhgenle1) && (wb.getfQty() <= tWhgenle1.getfQtyblc())) {                        updateTWhgenlegData(wb, tWhgenle1.getfId(), "SJRKRevoke");                    } else {                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();                        return AjaxResult.error("第" + i + "行撤销数大于库存结余数");                    }                    //  2、原货权方撤销出库                    // 查询库存总账                    tWarehousebills.setfCorpid(fCorpid);                    TWhgenleg tWhgenle2 = queryTWhgenleg(tWarehousebills, wb);                    updateTWhgenlegData(wb, tWhgenle2.getfId(), "SJCKRevoke");                }                i++;                wb.setfBillstatus("1");                wb.setUpdateBy(loginUser.getUser().getUserName());                wb.setUpdateTime(new Date());                if (tWarehousebillsitemsMapper.updateTWarehousebillsitems(wb) <= 0) {                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();                    return AjaxResult.error("新增库存明细失败");                }            }        }        // 查询所有库存明细 修改仓库主表状态        int notInStorage = 0;        int Stored = 0;        TWarehousebillsitems tWarehousebillsitems = new TWarehousebillsitems();        tWarehousebillsitems.setfPid(fPid);        List<TWarehousebillsitems> warehousebillsitemsList1 = tWarehousebillsitemsMapper.selectTWarehousebillsitemsList(tWarehousebillsitems);        for (TWarehousebillsitems item : warehousebillsitemsList1) {            if (item.getfBillstatus() == null) {                notInStorage++;            } else if (item.getfBillstatus().equals("6")) {                Stored++;            } else if (item.getfBillstatus().equals("1")) {                notInStorage++;            }        }        // 录入库存明细整体状态        TWarehouseBills warehouseBill = new TWarehouseBills();        warehouseBill.setfId(fPid);        if (Objects.equals(Stored, 0)) { // 未入库            warehouseBill.setfItemsStatus("1");        } else if (Objects.equals(notInStorage, 0)) { // 已入库            warehouseBill.setfItemsStatus("6");        } else { // 有已入库、有未入库            warehouseBill.setfItemsStatus("2");        }        tWarehouseBillsMapper.updateTWarehousebills(warehouseBill);        return AjaxResult.success();    }}
 |