| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259 |
- package cn.com.lzt.purchase.service.impl;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map.Entry;
- import java.util.UUID;
- import com.alibaba.druid.util.StringUtils;
- import org.jeecgframework.core.common.exception.BusinessException;
- import org.jeecgframework.core.common.service.impl.CommonServiceImpl;
- import org.jeecgframework.core.constant.Globals;
- import org.jeecgframework.core.util.MyBeanUtils;
- import org.jeecgframework.core.util.oConvertUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import cn.com.lzt.purchase.dao.POrderDao;
- import cn.com.lzt.purchase.dto.OrderToSupplierDto;
- import cn.com.lzt.common.util.StringUtil;
- import cn.com.lzt.purchase.entity.POrdersEntity;
- import cn.com.lzt.purchase.service.POrdersServiceI;
- import cn.com.lzt.purchasedetails.entity.OrderDetailsEntity;
- @Service("pOrdersService")
- @Transactional
- public class OrdersServiceImpl extends CommonServiceImpl implements POrdersServiceI {
- @Autowired
- private POrderDao porderDao;
- public <T> void delete(T entity) {
- super.delete(entity);
- //执行删除操作配置的sql增强
- this.doDelSql((POrdersEntity)entity);
- }
-
- public void addMain(POrdersEntity orders,
- List<OrderDetailsEntity> orderDetailsList){
- if(orders.getOrderDate() == null)
- orders.setOrderDate(new Date());
- if(orders.getAuto()==null) orders.setAuto(Integer.valueOf(Globals.NO));
- String sourceType = orders.getSourceType();
- orders.setReferenceTotalMoney(orders.getTotalMoney());
- //保存主信息
- this.save(orders);
- HashMap<String,Double> qgdCallbackValue = new HashMap<String,Double>();
- //申购单id
- // String qgdID = "";
- /**保存-采购商品*/
- for(OrderDetailsEntity orderDetails:orderDetailsList){
- if(orderDetails.getSourceBId()!=null && orderDetails.getSourceBId().length()>0)
- {
- qgdCallbackValue.put(orderDetails.getSourceBId(), orderDetails.getQuantity());
- // qgdID = orderDetails.getSourceId();
- }
- //外键设置
- orderDetails.setFkId(orders.getId());
- // 未到货数量为采购数量
- orderDetails.setQuantityNotArrived(orderDetails.getQuantity());
- orderDetails.setPayStatus(Integer.valueOf(Globals.NO));
- orderDetails.setReferencePurchasePrice(orderDetails.getPurchasePrice());
- orderDetails.setReferenceMoney(orderDetails.getMoney());
- if(StringUtils.equals(sourceType, "fixAsset") ||StringUtils.equals(sourceType, "fixAssetSelf")){//判断以前固定资产是否报销过
- String productId = orderDetails.getSourceBId();
- String findInner ="select d.id from t_b_order_fix_asset_products d " +
- "where d.id=? and " +
- " (d.fk_id in (SELECT request_id FROM t_b_activiti_cost_pay_inner_user_detail where source_type='fix_asset') " +
- " or find_in_set(d.id,(SELECT ifnull(group_concat(request_id),'') FROM t_b_activiti_cost_pay_tmp_company tmp where tmp.source_type='fix_asset')) >0 )" ;
- List<?> iList = findListbySql(findInner,productId);
- if(!iList.isEmpty()) {//固定资产报销过
- orderDetails.setPayStatus(Integer.valueOf(Globals.YES));
- }
- }
- this.save(orderDetails);
- }
- if(qgdCallbackValue.size()>0) {
- if(sourceType.indexOf("orders") > -1) {
- updateQGD(qgdCallbackValue);
- }else if(sourceType.indexOf("fixAsset") > -1 ) {
- updateFixAsset(qgdCallbackValue);
- }
- }
- //执行新增操作配置的sql增强
- this.doAddSql(orders);
- }
- @Override
- public List<OrderToSupplierDto> getOrderToSupplierDtoPage(String orderid){
- List<OrderToSupplierDto> list = porderDao.getOrderToSupplierDto(orderid);
- return list;
- }
-
- public void updateMain(POrdersEntity orders,
- List<OrderDetailsEntity> orderDetailsList) {
- if(orders.getOrderDate() == null)
- orders.setOrderDate(new Date());
- //保存主表信息
- this.saveOrUpdate(orders);
- //===================================================================================
- //获取参数
- Object id0 = orders.getId();
- //===================================================================================
- //1.查询出数据库的明细数据-采购商品
- String hql0 = "from OrderDetailsEntity where 1 = 1 AND fK_ID =? ";
- List<OrderDetailsEntity> orderDetailsOldList = this.findHql(hql0,id0);
- //2.筛选更新明细数据-采购商品
- if(orderDetailsList!=null&&orderDetailsList.size()>0){
- for(OrderDetailsEntity oldE:orderDetailsOldList){
- boolean isUpdate = false;
- for(OrderDetailsEntity sendE:orderDetailsList){
- //需要更新的明细数据-采购商品
- if(oldE.getId().equals(sendE.getId())){
- try {
- MyBeanUtils.copyBeanNotNull2Bean(sendE,oldE);
- if(oldE.getQuantityArrived() == null || oldE.getQuantityArrived() <=0){
- oldE.setQuantityNotArrived(oldE.getQuantity());
- }else{
- oldE.setQuantityNotArrived(oldE.getQuantity() - oldE.getQuantityArrived());
- }
- this.saveOrUpdate(oldE);
- } catch (Exception e) {
- e.printStackTrace();
- throw new BusinessException(e.getMessage());
- }
- isUpdate= true;
- break;
- }
- }
- if(!isUpdate){
- //如果数据库存在的明细,前台没有传递过来则是删除-采购商品
- super.delete(oldE);
- }
-
- }
- //3.持久化新增的数据-采购商品
- for(OrderDetailsEntity orderDetails:orderDetailsList){
- if(oConvertUtils.isEmpty(orderDetails.getId())){
- //外键设置
- orderDetails.setFkId(orders.getId());
- // 未到货数量为采购数量
- orderDetails.setQuantityNotArrived(orderDetails.getQuantity());
- this.save(orderDetails);
- }
- }
- }
- //执行更新操作配置的sql增强
- this.doUpdateSql(orders);
-
- //TODO 回写申购单采购数量
-
- //END 回写申购单采购数量
- }
-
- public void delMain(POrdersEntity orders) {
- //获取参数
- Object id0 = orders.getId();
- //===================================================================================
- //删除-采购商品
- String hql0 = "from OrderDetailsEntity where 1 = 1 AND fK_ID =? ";
- List<OrderDetailsEntity> orderDetailsOldList = this.findHql(hql0,id0);
- HashMap<String,Double> qgdCallbackValue = new HashMap<String,Double>();
- /**保存-采购商品*/
- //申购单id
- // String qgdID = "";
-
- for(OrderDetailsEntity orderDetails:orderDetailsOldList){
- if(orderDetails.getSourceBId()!= null&&orderDetails.getSourceBId().length()>0)
- {
- // qgdID = orderDetails.getSourceId();
- qgdCallbackValue.put(orderDetails.getSourceBId(), 0-orderDetails.getQuantity());
- }
- }
- //this.deleteAllEntitie(orderDetailsOldList);
- //更新主表状态,逻辑删除,用于取消此订单
- String sql = "update t_s_porders set order_status = 3 where id = ?";
- executeSql(sql, id0);
- //this.delete(orders);
- //===================================================================================
- // 更新申购单已经采购数量
- updateQGD(qgdCallbackValue);
-
- }
-
-
- /**
- * 默认按钮-sql增强-新增操作
- * @return
- */
- public boolean doAddSql(POrdersEntity t){
- return true;
- }
- /**
- * 默认按钮-sql增强-更新操作
- * @return
- */
- public boolean doUpdateSql(POrdersEntity t){
- return true;
- }
- /**
- * 默认按钮-sql增强-删除操作
- * @return
- */
- public boolean doDelSql(POrdersEntity t){
- return true;
- }
-
- /**
- * 替换sql中的变量
- * @param sql
- * @return
- */
- public String replaceVal(String sql,POrdersEntity t){
- sql = sql.replace("#{id}",String.valueOf(t.getId()));
- sql = sql.replace("#{create_name}",String.valueOf(t.getCreateName()));
- sql = sql.replace("#{create_by}",String.valueOf(t.getCreateBy()));
- sql = sql.replace("#{create_date}",String.valueOf(t.getCreateDate()));
- sql = sql.replace("#{update_name}",String.valueOf(t.getUpdateName()));
- sql = sql.replace("#{update_by}",String.valueOf(t.getUpdateBy()));
- sql = sql.replace("#{update_date}",String.valueOf(t.getUpdateDate()));
- sql = sql.replace("#{bpm_status}",String.valueOf(t.getBpmStatus()));
- sql = sql.replace("#{order_date}",String.valueOf(t.getOrderDate()));
- sql = sql.replace("#{order_onumber}",String.valueOf(t.getOrderOnumber()));
- sql = sql.replace("#{handler_person_id}",String.valueOf(t.getHandlerPersonId()));
- sql = sql.replace("#{handler_person_name}",String.valueOf(t.getHandlerPersonName()));
- sql = sql.replace("#{supplier_id}",String.valueOf(t.getSupplierId()));
- sql = sql.replace("#{supplier_name}",String.valueOf(t.getSupplierName()));
- sql = sql.replace("#{pay_account}",String.valueOf(t.getPayAccount()));
- sql = sql.replace("#{order_auditor}",String.valueOf(t.getOrderAuditor()));
- sql = sql.replace("#{total_money}",String.valueOf(t.getTotalMoney()));
- sql = sql.replace("#{discount_money}",String.valueOf(t.getDiscountMoney()));
- sql = sql.replace("#{amount_payable}",String.valueOf(t.getAmountPayable()));
- sql = sql.replace("#{order_status}",String.valueOf(t.getOrderStatus()));
- sql = sql.replace("#{warehouse_id}",String.valueOf(t.getWarehouseId()));
- sql = sql.replace("#{warehouse_name}",String.valueOf(t.getWarehouseName()));
- sql = sql.replace("#{audit_date}",String.valueOf(t.getAuditDate()));
- sql = sql.replace("#{prepaid_money}",String.valueOf(t.getPrepaidMoney()));
- sql = sql.replace("#{UUID}",UUID.randomUUID().toString());
- return sql;
- }
-
- private void updateQGD(HashMap<String,Double> idAndValues )
- {
- String productsUpdSql = "update t_b_order_products set quantity_arrived = ifnull(quantity_arrived ,0) + ?,quantity_not_arrived = ifnull(quantity_arrived ,0) -? where id = ?";
- for (Entry<String,Double> idAndValue: idAndValues.entrySet()) {
- executeSql(productsUpdSql, idAndValue.getValue(),idAndValue.getValue(),idAndValue.getKey());
- }
- // 一个订单最多只能参照一个申购单生成,所有更新一条order语句即可
- // String orderUpdSql = "update t_b_orders set order_status = 0 where not exists ( select fk_id from t_b_order_products where id = ? and ifnull(quantity_arrived,0) >= quantity)";
- // executeSql(orderUpdSql,orderid);
- }
- private void updateFixAsset(HashMap<String,Double> idAndValues )
- {
- String productsUpdSql = "update t_b_order_fix_asset_products set quantity_arrived = ifnull(quantity_arrived ,0) + ?,quantity_not_arrived = ifnull(quantity_arrived ,0) -? where id = ?";
- for (Entry<String,Double> idAndValue: idAndValues.entrySet()) {
- executeSql(productsUpdSql, idAndValue.getValue(),idAndValue.getValue(),idAndValue.getKey());
- }
- }
- }
|